tkinter создает ярлыки и записи динамически - PullRequest
1 голос
/ 04 сентября 2011

Я хочу создать простой графический интерфейс, где я могу ввести некоторые значения. Метка перед и на кнопке и, чтобы запустить скрипт.

Я использовал что-то вроде этого:

w = Label(master, text="weight:")
w.grid(sticky=E)
w = Label(root, text="bodyfathydrationmuscle:bones")
w.grid(sticky=E)
w = Label(root, text="hydration:")
w.grid(sticky=E)

все хорошо, но я хочу сделать это динамически. также, когда я использовал бы w для всех записей, я мог разыграть w.get только один раз. но мне нужны все мои данные; -)

я думал о:

  def create_widgets(self):
    L=["weight","bodyfat","hydration","muscle","bones"]
    LV=[]
    for index in range(len(L)):
        print(index)
        print(L[index])
        ("Entry"+L[index])= Entry(root)
        ("Entry"+L[index]).grid(sticky=E)
        ("Label"+L[index])=Label(root, text=L[index])
        ("Label"+L[index]).grid(row=index, column=1)

Позвонить позже:

var_weight=Entryweight.get()
var_bodyfat=Entrybodyfat.get()

и так далее. как я могу заставить это работать?

1 Ответ

7 голосов
/ 05 сентября 2011

Ваша программа предполагает, что Entrybodyfat и другие переменные должны быть сгенерированы на лету , но вы не хотите этого делать.

Обычный подход заключается в сохранениизаписи и метки в списке или на карте:

from Tkinter import *

root = Tk()

names = ["weight", "bodyfat", "hydration", "muscle", "bones"]
entry = {}
label = {}

i = 0
for name in names:
    e = Entry(root)
    e.grid(sticky=E)
    entry[name] = e

    lb = Label(root, text=name)
    lb.grid(row=i, column=1)
    label[name] = lb
    i += 1

def print_all_entries():
    for name in names:
        print entry[name].get()

b = Button(root, text="Print all", command=print_all_entries)
b.grid(sticky=S)

mainloop()

Значением записи bodyfat будет entry["bodyfat"].get().

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