Проблемы с доступом к виджетам Tkinter в списке - PullRequest
1 голос
/ 21 июля 2011

Я пытаюсь написать небольшую программу, в которой у меня есть список полей меток и полей ввода с использованием Python и Tkinter (см. Код ниже). Добавление виджетов не проблема. Однако, когда я хочу использовать метод одного из экземпляров (например, Insert () для одного из полей ввода), я не могу найти способ сделать это.

Мой код выглядит так:

from Tkinter import *
import random
root = Tk()

attributes = {'Strength':10, 'Dexterity':10, 'Constitution':10, 'Intelligence':10, 'wisdom':10, 'charisma':10}
entries = []
labels = []

i = 0
for a in attributes:
   labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
   entries.append(Entry(root).grid(column = 1, row = i))
   i = i+1

root.mainloop()

и я попробовал простой

entries[i].insert("text to insert")

и

e = Entry
e = entries[i]
e.insert...

но это не помогло. Я видел другие примеры людей, пытающихся использовать объект в списке, и кажется, что они делают то же, что и я в моей первой попытке. Я что-то пропустил?

Спасибо

Ответы [ 2 ]

4 голосов
/ 21 июля 2011

Entry(root).grid() возвращает объект NoneType, поэтому все, что вы храните в своем списке, это None. Вы можете сначала создать виджет Entry, вызвать grid(), а затем добавить его в свой список.

from Tkinter import *
import random
root = Tk()
attributes = {'Strength':10, 'Dexterity':10, 'Constitution':10, 'Intelligence':10, 'wisdom':10, 'charisma':10}
entries = []
labels = []


for i,a in enumerate(attributes):
   labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
   e = Entry(root)
   e.grid(column=1, row=i)
   entries.append(e)
   entries[i].insert(INSERT,"text to insert")



root.mainloop()
1 голос
/ 21 июля 2011

Я сталкивался с этой проблемой до того, как запустил Python. Я сказал: «Зачем занимать две строки, создавая что-то и устанавливая расположение сетки. Я положу все это на одну». Забавная история, «.grid» возвращает None. Так что я не думаю, что вы на самом деле что-то здесь добавляете.

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