Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15

Поле Entry в цикле (мини табличка)

28.05.2018, 00:07. Показов 7164. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим у меня 10 человек выведенных из базы с помощью Label мне нужно этим 10 людям поставить оценку каждому разную для этого я использую цикл и в цикле 1 поле Entry. Как считать потом эти данные?

 Комментарий модератора 
Официальными языками форума являются русский и английский. Пожалуйста, придерживайтесь правил.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2018, 00:07
Ответы с готовыми решениями:

Размер шрифта и поле Entry
Есть такой вопрос - я создаю поле ввода и устанавливаю на нем размер шрифта, но поле увеличивается прямо пропорционально размеру шрифта....

Поле ввода Entry и messagebox
Добрый день! Необходимо по нажатию кнопки выводить меседжбокс с сообщениями в зависимости от того,что введено в поле Entry Пробовал...

Как сравнить запись в БД и в поле entry
Есть форма, в которую вводятся логин и пароль, данная форма выступает как доступ к главному окну. Так вот, в базу данных все возможные...

22
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
28.05.2018, 00:55
Покажи код
0
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
29.05.2018, 19:55  [ТС]
У меня есть база в которой находитса дание про студентов . a[0],a[1]a[2],a[3] ето Номер заликовки Фамилия Имя и Отчество.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
        self.title('Помічник секретаря')
        self.geometry('900x500')
        self.config(bg='light blue')
        s = ("Select* from Студенти")
        cur3 = conn.cursor()
        cur3.execute(s)
        self.s1 = cur3.fetchall()
 
        
 
 
###############################################
        y = 10
        for a in self.s1:
         self.namber_z = a[0]
         self.nam = a[1] + " " + a[2] + " " + a[3]
         print(self.nam)
 
         self.text = Label(self, text=self.nam, font=15)
         self.text.place(x=2, y=y)
 
         self.e = Entry(self)
         self. e.place(x=300,y=y)
         y+=20
     ###########################################
        self.vnestu = Button(self,text="Внести оцінки",font=15,command=self.add_ocinku)
        self.vnestu.place(x=400, y=y)
        self.vnestu.bind("<Button-1>")
0
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
02.06.2018, 22:40  [ТС]
я скинул код. Посмотри пожалста!
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
03.06.2018, 02:14
Лучший ответ Сообщение было отмечено Sawa00 как решение

Решение

Вот пример можно ввести 10 строк и затем поместить из в listbox

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from tkinter import *
 
class MyFirstGUI:
    def __init__(self, master):
        self.master = master
        master.title("Программа")
 
        self.s = []
        self.i = 0
 
        self.label = Label(master, text="Введите строку")
        self.label.pack()
 
        self.v = StringVar()
        self.e = Entry(master, textvariable=self.v)
        self.e.pack()
 
        self.greet_button = Button(master, text="Следующее", command=self.get_messages)
        self.greet_button.pack()
 
        self.Lb1 = Listbox()
        self.Lb1.pack()
 
        self.fill_button = Button(master, text="Заполнить", command=self.fill_list)
        self.fill_button.pack()
 
        self.close_button = Button(master, text="Выход", command=master.quit)
        self.close_button.pack()
 
    def get_messages(self):
        if self.i < 10:
            if self.v.get() != "":
                self.s.append(self.v.get())
                print(self.v.get())
                self.v.set("")
                self.i += 1
        else:
            self.v.set("Все строки введены")
 
    def  fill_list(self):
        self.Lb1.delete(0, END)
        if len(self.s) > 0:
            for item in self.s:
                self.Lb1.insert(END, item)
        else:
            self.Lb1.insert(END, "Нет сообщений")
 
root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
1
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
03.06.2018, 21:22  [ТС]
Идея замечательная но как мне з бази взять боле 10 человек?! у мяня індекс с 0.
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
04.06.2018, 04:50
Цитата Сообщение от Sawa00 Посмотреть сообщение
мне з бази взять боле 10 человек?! у мяня індекс с 0.
как тот факт, что индекс начинается с нуля, мешает взять из базы больше 10 человек?
1
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
07.06.2018, 22:29  [ТС]
Нет извини дурацкий вопрос. Мне нужно сделать так, чтобы я мог каждому студенту ввести соответствующую оцинку.Посмотры:
Миниатюры
Поле Entry в цикле (мини табличка)  
0
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
07.06.2018, 22:31  [ТС]
если можеш дай свою почту . мне просто нужна помощь.
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
08.06.2018, 01:05
Лучший ответ Сообщение было отмечено Sawa00 как решение

Решение

Цитата Сообщение от Sawa00 Посмотреть сообщение
если можеш дай свою почту . мне просто нужна помощь.
Спрашивай тут, может кто-нибудь еще ответит

Цитата Сообщение от Sawa00 Посмотреть сообщение
Мне нужно сделать так, чтобы я мог каждому студенту ввести соответствующую оцинку
Вот пример

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from tkinter import *
 
root = Tk()
 
vars = [StringVar() for _ in range(15)]
 
def set_estimate():
    if all(e.get() != '' for e in vars):
            print('Оценки проставлены')
    else:
        print('Оценки не проставлены')
 
for i in range(15):
    Label(root, text="Фамилия").grid(row=i, column=0)
    Entry(root, textvariable=vars[i]).grid(row=i, column=1)
 
Button(root, text="Внести оценки", command=set_estimate).grid(row=16, column=3)
 
root.mainloop()
1
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
08.06.2018, 23:17  [ТС]
Спасибо!!! очень виручил)

Добавлено через 43 минуты
Смотри а если у меня есть цикл в котором я вивожу із бази імена і номер заликовки он динамисеской ..можно ево использовать.???Посмотри код ... я пробовал но мне вибивает ошибку..
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Child7(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child7()
 
 
    def init_child7(self):
        self.title('Помічник секретаря')
        self.geometry('900x500')
        self.config(bg='light blue')
        s = ("Select* from Студенти")
        cur3 = conn.cursor()
        cur3.execute(s)
        self.s1 = cur3.fetchall()
 
 
###############################################
        y = 10
        self.vars1 = [StringVar() for _ in self.s1]
        for a in self.s1:
 
          self.namber_z = a[0]
          self.nam = a[1] + " " + a[2] + " " + a[3]
          print(self.nam)
 
          self.text = Label(self, text=self.nam, font=15)
          self.text.place(x=2, y=y)
 
          self.e = Entry(self,textvariable=self.vars1[int(a)])
          self. e.place(x=300,y=y)
          y+=20
     ###########################################
        self.vnestu = Button(self,text="Внести оцінки",font=15,command=self.add_ocinku)
        self.vnestu.place(x=400, y=y)
        self.vnestu.bind("<Button-1>")
        self.resizable(False, False)
        self.overrideredirect(False)
 
    def add_ocinku(self):
          ocinku = (self.e.get() for self.e in self.vars1)
          print(ocinku)
          cur3 = conn.cursor()
          db1 = (""" INSERT INTO Оцінки(Дата,Студент_номер_залікової_книжки, Придмети_idПридмети,оцінка) values(%s,%s,%s,%s,%s)""")
          z1 = [2018 - 11 - 3, (self.namber_z), int(id_pred), int(ocinku)]
 
          cur3.execute(db1, z1)
          cur3.close()
          conn.commit()
Добавлено через 2 минуты
TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
Аргумент TypeError: int () должен быть строкой, байтовым объектом или числом, а не 'tuple'
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
08.06.2018, 23:29
В ocinku не число, а кортеж и обрабатывать надо соответственно, как--то так

Python
1
2
3
for  ocin in ocinku:
    z1 = [2018 - 11 - 3, (self.namber_z), int(id_pred), int(ocin)]
    cur3.execute(db1, z1)
0
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
10.06.2018, 12:30  [ТС]
Да я уже както зделал. Смотри я уже наверное надоел но у меня опять проблема) я питаюсь зделать очистку всех полей когда они давились в базу но в StringVar неработает метод .delete(0, END), как ето зделать ???
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
10.06.2018, 13:13
Python
1
2
for e in vars:
    e.set('')
1
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
14.06.2018, 17:49  [ТС]
У меня проблема (опять) когда я записую в базу оценки записивається всегда последная оценка.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
   def init_child7(self):
        self.title('Помічник секретаря')
        self.geometry('900x500')
        self.config(bg='light blue')
        s = ("Select* from Студенти")
        cur3 = conn.cursor()
        cur3.execute(s)
        self.s1 = cur3.fetchall()
 
 
###############################################
        y = 10
        self.k=0
        for a in self.s1:
            self.nam = a[1] + " " + a[2] + " " + a[3]
            print(self.nam)
 
            self.text = Label(self, text=self.nam, font=15)
            self.text.place(x=2, y=y)
            self.k = self.k+1
            y+=20
        self.k1=self.k
        self.vars1 = [StringVar() for _ in range(self.k1)]
        y1=10
        for i in range(self.k1):
          self.e = Entry(self,textvariable=self.vars1[i])
          self. e.place(x=300,y=y1)
          y1+=20
 
     ###########################################
        self.vnestu = Button(self,text="Внести оцінки",font=15,command=self.add_ocinku)
        self.vnestu.place(x=400, y=y)
        self.vnestu.bind("<Button-1>")
        self.resizable(False, False)
        self.overrideredirect(False)
 
    def add_ocinku(self):
 
         global ocinku
 
 
 
         for e in self.vars1:
                ocinku = e.get()
                print(ocinku)
         for a1 in self.s1:
 
 
           self.namber_z = a1[0]
           print(self.namber_z)
           cur3 = conn.cursor()
           db1 = (""" INSERT INTO Оцінки(Дата,Студенти_номер_залікової_книжки, оцінка,екзамен,предмет)
            values(%s,%s,%s,%s,%s)""")
           for ocin in ocinku:
            z1 = (datetime.date(2018,11,3), self.namber_z, int(ocin), Ekzamen, pred )
            cur3.execute(db1, z1)
           cur3.close()
           conn.commit()
         if all(e1.get() != '' for e1 in self.vars1):
               print('Оценки проставлены')
         else:
             messagebox.showerror("Увага!", "Перевірте чи правельно введенні дані!")
         for e1 in self.vars1:
            e1.set('')
Добавлено через 17 часов 29 минут
Посмотри пожалуйста!
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
14.06.2018, 20:07
Не понятно, как устроена таблица, дата одинаковая может строка перезаписывается?

Добавлено через 17 минут
Нужна структура базы данных

Добавлено через 1 час 44 минуты
можно так если размер self.s1 и ocinku одинаков

Python
1
2
3
for i in range(len(self.s1)):
    self.namber_z = self.s1[i]
    ocinku[i]
0
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
14.06.2018, 21:43  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 def add_ocinku(self):
 
         global ocinku
         for e in self.vars1:
             ocinku = e.get()
         for i1 in range(len(self.s1)):
 
             self.namber_z = self.s1[i1]
             ocin = ocinku[i1]
             print(self.namber_z)
             print(ocin)
             cur3 = conn.cursor()
             db1 = (""" INSERT INTO Оцінки(Дата,Студенти_номер_залікової_книжки, оцінка,екзамен,предмет)
                values(%s,%s,%s,%s,%s)""")
             z1 = (datetime.date(2018,11,3), self.namber_z, int(ocin), Ekzamen, pred )
             cur3.execute(db1, z1)
             cur3.close()
             conn.commit()
         if all(e1.get() != '' for e1 in self.vars1):
               print('Оценки проставлены')
         else:
             messagebox.showerror("Увага!", "Перевірте чи правельно введенні дані!")
         for e1 in self.vars1:
             e1.set('')
Оно ошибку видает 1241, 'Operand should contain 1 column(s)')

Добавлено через 12 минут
Смотри они списки и их нужно перебрать както чтоби все елементи вивели я попробивал так но оно записивает только последниму последнюю оценку
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 def add_ocinku(self):
 
         global ocinku
         for e in self.vars1:
             ocinku = e.get()
         for a1 in self.s1:
             self.namber_z = a1[0]
         for i1 in range(0,int(self.k1)):
 
             self.namber_z1 = self.namber_z
             ocin = ocinku[i1]
             print(self.namber_z)
             print(ocin)
             cur3 = conn.cursor()
             db1 = (""" INSERT INTO Оцінки(Дата,Студенти_номер_залікової_книжки, оцінка,екзамен,предмет)
                values(%s,%s,%s,%s,%s)""")
             z1 = (datetime.date(2018,11,3), self.namber_z1, int(ocin), Ekzamen, pred )
             cur3.execute(db1, z1)
             cur3.close()
             conn.commit()
         if all(e1.get() != '' for e1 in self.vars1):
               print('Оценки проставлены')
         else:
             messagebox.showerror("Увага!", "Перевірте чи правельно введенні дані!")
         for e1 in self.vars1:
             e1.set('')
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
14.06.2018, 21:48
Вот тут

Python
1
2
for a1 in self.s1:
             self.namber_z = a1[0]
перебираются все данные в self.s1, и в self.number_z остается последнее
0
0 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 15
14.06.2018, 22:38  [ТС]
а как зделать чтоб они все записивались?
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
14.06.2018, 22:46
В одном цикле все делать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2018, 22:46
Помогаю со студенческими работами здесь

Получить позицию курсора в поле Entry
Добрый день! Имеется поле для ввода Entry. Хочу сделать кнопки перемещения позиции для ввода вправо и влево, информацию по этой теме не...

В текстовое поле Entry не получается записать текст
def show_message(): messagebox.showinfo(&quot;mbx&quot;, message.get()) root = Tk() root.title(&quot;System HRU&quot;) ...

Tkinter+Matplotlib ввод функции в поле Entry
Доброго времени суток! Занимаюсь разработкой программы для построения графика функции с gui при помощи Tkinter и matplotlib. Встал...

Обновлять работу функции по событию (по мере ввода в поле Entry)
Доброго времени суток! Есть простое пользовательское окно. В этом окне есть поле Entry с лейблом &quot;Гаражный номер&quot;. Там будет...

Как запретить ввод букв и других символов кроме цифр в поле ввода (Entry)
Всем доброго времени суток. Нужна помощь!!! Пишу программу и она должна проводить математические операций с введенными значениями в поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru