我将checkbutton
放在text
窗口小部件上,但每次选择checkbutton
时,都会调用函数checkbutton_value
,并返回0.
部分代码是:
def callback():
file_name=askopenfilename()
column_1rowname,column_name=draw_column(file_name)
root = Tk()
root.resizable(width=False,height=False)
root.wm_title("Column")
S = Scrollbar(root,orient="vertical")
text=Text(root,width=15,height=10,yscrollcommand=S.set)
S.config(command=text.yview)
S.pack(side="right",fill="y")
text.pack(side="left",fill="both",expand=True)
#check the value of the checkbutton
def checkbutton_value():
if(var.get()):
print 1
else:
print 0
var=BooleanVar()
chk = Checkbutton(root, text=column_1rowname[1], variable=var, command=checkbutton_value)
text.window_create("end", window=chk)
text.config(state=DISABLED)
errmsg='Error!'
Button(text='File Open',command=callback).pack(fill=X)
mainloop()
答案 0 :(得分:1)
问题是您有多个根窗口。您应该只创建一个Tk
的实例,并且只调用mainloop
一次。如果您需要其他窗口,请创建Toplevel
。
每个根窗口(及其所有子窗口以及所有相关的StringVar
等)都会启动一个新的独立 tcl解释器。与此窗口关联的窗口小部件和变量不能在另一个tcl解释器中使用。在您的情况下,StringVar
与第一个根窗口关联,但窗口小部件与第二个窗口关联。你不能像那样在根窗口之间共享数据。