Найти - Пользователи
Полная версия: tkinter. Создание Text в цикле
Начало » Python для новичков » tkinter. Создание Text в цикле
1
mihanik1985
Очень прошу помощи или совета в вопросе который поставил меня в тупик.
Существует необходимость подредактировать строки БД. в качестве СУБД используется GUI которую я пытаюсь составить на tkinter. Для изменения строк БД планирую использовать объект Text с последующим получением из него значения. Сейчас код выглядит так:
   system_id.grid(row=0, column=3)
system_name = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
system_name.grid(row=2, column=3)
repair_group = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
repair_group.grid(row=4, column=3)
equipment_list = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
equipment_list.grid(row=6, column=3)
work_list = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
work_list.grid(row=8, column=3)
maps = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
maps.grid(row=10, column=3)
protect = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
protect.grid(row=12, column=3)
si_list = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
si_list.grid(row=14, column=3)
injury = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
injury.grid(row=16, column=3)
conclusion = Text(self.edit_wind, height=3, width=75, font='Arial 10', wrap=WORD)
conclusion.grid(row=18, column=3)

При создании этих объектов в цикле обратиться можно только к последнему. Прим:
for i in keys:
text = Text(self.edit_wind, height=3,width=75,font='Arial 10',wrap=WORD)
text.grid(row=k, column=3)
k += 2

Так каким образом создать объекты Text в цикле с именами из списка keys, что бы к ним в дальнейшем можно было обращаться?
FishHook
 from Tkinter import Tk, Text, Label, WORD, Button, END
class Window:
    def __init__(self, root):
        self.root = root
        self.text_fields = []
        for i in range(10):
            text_field = Text(self.root, height=3, width=75, font='Arial 10', wrap=WORD)
            label = Label(root, text="Field #{}".format(i))
            label.grid(column=1, row=i)
            text_field.grid(column=2, row=i)
            self.text_fields.append(text_field)
        button = Button(root, text="Press me", command=self.get_all)
        button.grid(column=1, row=i+1)
    def get_all(self):
        for txt in self.text_fields:
            print(txt.get(1.0, END))
    def get_text(self, i):
        return self.text_fields[i]
if __name__ == "__main__":
    root = Tk()
    window = Window(root)
    root.mainloop()
mihanik1985
Огромное спасибо. Все заработало
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB