Tkinter-Create Buttons по словарным ключам - PullRequest
0 голосов
/ 28 октября 2011

Я пытаюсь создать графический интерфейс для небольшой программы построения файлов журналов. У меня есть все данные в словаре (фактически dict {dict {dict {dict {dict {}}}}}), и я хотел бы использовать ключи для создания значений табуляции для флажков верхних ключей, которые в основном будут выбраны для построения графика количества в зависимости от времени для подключей. Я посмотрел в pyttk, и он похож на то, что я хотел, хотя я сталкиваюсь с проблемами, как реализовать создание вкладки / кнопки.

Заранее большое спасибо.

1 Ответ

1 голос
/ 28 октября 2011

Один из способов - сохранить ссылки на связанные переменные в словаре.Вот пример:

import Tkinter as tk

data = {"Field 1": 1,
        "Field 2": 2,
        "Field 3": 3,
        "Field 4": 4,
}

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.variables ={}
        for label in sorted(data.keys()):
            self.variables[label] = tk.IntVar()
            cb = tk.Checkbutton(self, text=label, 
                                onvalue=data[label], offvalue=0, 
                                variable=self.variables[label])
            cb.pack(side="top", fill="x")


        button = tk.Button(self, text="Submit", command=self.OnSubmit)
        button.pack()

    def OnSubmit(self):
        for field in sorted(data.keys()):
            print "Value for %s: %s" % (field, self.variables[field].get())

if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()

Если вам не нравится создавать переменные на лету, потратив немного усилий, вы можете создать массив, с которым могут быть связаны все кнопки.Я привел пример того, как это сделать, в вопросе Как запустить код при изменении значения виджета Tkinter?

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