【发布时间】:2013-05-31 06:14:00
【问题描述】:
我在 root.frame1 上有一组检查按钮,我想在 root 的子框架中使用选定的按钮来制作选项菜单。我采取的方法是:
import Tkinter as Tk
root = Tk.Tk()
frame1 = Tk.Frame(root)
variables = dict()
s = {'WZ':'1','ZB':'2','RS':'3','CC':'4','CL':'5'}
for k,v in s.iteritems():
variables[k]= Tk.IntVar()
cb = Tk.Checkbutton(frame1, text=v,onvalue=v, offvalue=0, variable=variables[k], anchor=W)
cb.pack(side='top',fill='x')
frame1.pack()
然后当我选择一些复选按钮时,变量字典中的值仍然是0:
for k,v in variables.iteritems():
print k,' ',v.get()
打印出来的:
'WZ' 0
'ZB' 0
....
我尝试使用元组列表而不是字典,即 variables =[('WZ',),...] 但值仍然没有改变。 你知道我的代码有什么问题吗?请告诉我。 谢谢 阿里
【问题讨论】:
-
我会更改一些部分,但您的代码对我有用。你试过用
Tk.IntVar(frame1)替换Tk.IntVar()吗? -
该代码也适用于我在带有 python 2.7 的 Mac 上。你能展示一个完整的工作程序,以便我们可以看到你是如何打印出这些值的吗?我的猜测是,您在主循环运行之前以某种方式打印它们。
-
没错。作为 Tkinter 的新手,我在运行主循环之前打印了变量。