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

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

28.05.2018, 00:07. Показов 7276. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru