Tkinter-根据字典键创建按钮

0 投票
1 回答
3280 浏览
提问于 2025-04-17 05:12

我正在尝试为一个小型的日志文件绘图程序创建一个图形用户界面(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控件的值变化时运行代码

撰写回答