Объект Tkinter помещается в список и превращается в нежелательный кортеж - PullRequest
1 голос
/ 02 июля 2019

Я создаю простой пользовательский интерфейс с Tkinter. Я получаю то, чего раньше никогда не видел ... После помещения объектов Label в список я ожидал, что смогу создать цикл for и затем нанести метки на сетки. Однако, запустив цикл for, я обнаружил, что мой список представляет собой список кортежей, которые содержат объекты. Когда я получаю объект из кортежа, он больше не является объектом tk Label.

#Here are my objects being initiated before going into the list
outputdir = tk.Label(frame2, text="Output folder name"),
format = tk.Label(frame2, text="Output Format"),
compress = tk.Label(frame2, text="Compress?"),
limit_span = tk.Label(frame2, text="Limit time span?")

#The list
label_list = [outputdir, format, compress, limit_span]

#The for loop I expected to be able to use
for i in range(len(label_list)-1):
    label_obj = label_list[i]
    label_obj.grid(row=i,column=0)

Я ожидал, что label_obj будет объектом tk.Label. Что я на самом деле получаю, так это кортеж ... если я получаю доступ к этому кортежу и печатаю, то обнаруживаю, что объект - это не просто набор мусорных чисел.

Вывод CMD для кода, который я ожидал, будет работать:

Traceback (most recent call last):
  File "f9borg_ui.py", line 110, in <module>
    label_obj.grid(row=i,column=0)
AttributeError: 'tuple' object has no attribute 'grid'

Вывод, если я печатаю (label_list). Обратите внимание, что каждый объект находится в кортеже в списке, за исключением последнего, как ни странно, последнего объекта ...

[(<Tkinter.Label instance at 0x05A4C328>,), (<Tkinter.Label instance at 0x05A4C3A0>,), (<Tkinter.Label instance at 0x05A4C418>,), (<Tkinter.Label instance at 0x05A4C490>,), (<Tkinter.Label instance at 0x05A4C508>,), (<Tkinter.Label instance at 0x05A4C580>,), (<Tkinter.Label instance at 0x05A4C5F8>,), (<Tkinter.Label instance at 0x05A4C670>,), (<Tkinter.Label instance at 0x05A4C6E8>,), <Tkinter.Label instance at 0x05A4C760>]

Вывод, если я получу доступ к кортежу. Так что напечатайте (tuple_list [0] [0])

.86381312.86381352

Что здесь происходит и как я могу это исправить? Спасибо за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...