Python tkinter checkbutton值始终等于0

时间:2016-09-11 03:22:03

标签: python checkbox tkinter

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

1 个答案:

答案 0 :(得分:1)

问题是您有多个根窗口。您应该只创建一个Tk的实例,并且只调用mainloop一次。如果您需要其他窗口,请创建Toplevel

的实例

每个根窗口(及其所有子窗口以及所有相关的StringVar等)都会启动一个新的独立 tcl解释器。与此窗口关联的窗口小部件和变量不能在另一个tcl解释器中使用。在您的情况下,StringVar与第一个根窗口关联,但窗口小部件与第二个窗口关联。你不能像那样在根窗口之间共享数据。