2013-07-12 5 views
1

Я начинаю программист, и я создаю приложение для изучения графического интерфейса. Я хочу создать несколько полей ввода для терминов и определений. Для того, чтобы создать один блок ввода, код (я считаю) будет:многократные метки ввода в tkinter

term = StringVar() 
term1 = Entry(root, textvariable = term) 
term1.grid(row=1, column=1) 

Моя цель состоит в том, чтобы быть в состоянии подсказать пользователю с просьбой, сколько членов они хотят. Мой вопрос заключается в том, какой цикл я должен выполнить для автоматического создания столбца полей ввода, определенного для числа, введенного пользователем?

ответ

1

Предположим, у вас есть пользовательский ввод x, целое число.

for i in range(x): 
    Entry(root, textvariable=StringVar()).grid(row=1, column=i+1) 

Но, к сожалению, вы не можете получить значение записей. Поэтому мы можем взять два списка.

variables = [] 
entries = [] 
for i in range(x): 
    va = StringVar() 
    en = Entry(root, textvariable=va) 
    en.grid(row=1, column=i+1) 
    variables.append(va) 
    entries.append(en) 

В этом случае вы можете получить доступ к записи и переменной, а затем использовать списки.

Тогда вам могут понадобиться имена, например, entry1, entry2, entry3, в пределах цикла. Это связано с динамически изменяемым созданием, которое невозможно получить в Python. Существует способ взлома с использованием exec или __dict__, но это не рекомендуется. Просто используйте список или dict.

+0

Спасибо, что работает, чтобы порождать окна ввода. Однако, когда у меня есть кнопка, которая печатает список (на сервере или через окно сообщения), все, что я получаю, это что-то вроде «» для каждого термина в списке. Что я делаю не так? –

+0

Для достижения значений вы должны использовать метод '.get()' 'StringVar'. @ TylerJones – zhangyangyu

Смежные вопросы