Tkinter-根据字典键创建按钮
我正在尝试为一个小型的日志文件绘图程序创建一个图形用户界面(GUI)。我把所有的数据都放在一个字典里(其实是一个字典里面又嵌套了好几个字典),我想用这些字典的键来创建一些选项卡,这些选项卡上有复选框,用户可以选择这些复选框来绘制子键对应的数量与时间的关系。我查了一下pyttk,感觉它和我想要的挺像的,不过我在创建选项卡和按钮的时候遇到了一些问题。
非常感谢你的帮助!
1 个回答
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()
如果你不喜欢像这样随便创建变量,其实只要稍微多花点力气,你可以创建一个数组,把所有按钮都和这个数组关联起来。我在问题中给出了一个例子,关于如何在Tkinter控件的值变化时运行代码。