Tkinter-根据字典键创建按钮

时间:2011-10-28 15:33:23

标签: python tkinter

我正在尝试为记录文件的小型绘图程序创建GUI。我将所有数据都放在字典中(实际上是dict {dict {dict {}}}}}}并且想要使用这些键来创建顶部键复选框的选项卡数量,这些复选框基本上会被选中以绘制数量与子键的时间。我已经查看了pyttk,它看起来与我想要的类似,但我遇到了如何实现选项卡/按钮创建的问题。

提前致谢了。

1 个答案:

答案 0 :(得分:1)

一种方法是在字典中存储对关联变量的引用。这是一个例子:

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()

如果您不喜欢像这样动态创建变量,只需稍加努力就可以创建一个可以与所有按钮相关联的数组。我举了一个如何在问题How to run a code whenever a Tkinter widget value changes?

中做到这一点的例子