Python 如何正确使用Tkinter中的控制变量?

Python 如何正确使用Tkinter中的控制变量?,python,variables,tkinter,Python,Variables,Tkinter,我刚开始研究tkinter以开发一些简单的GUI应用程序。然而,我很难弄清楚控制变量是如何使用的。我只是想检索CheckButton的状态,它是否被选中以及条目的文本,但是使用控制变量似乎不起作用。我知道my_entry.get也可以用来获取文本,但由于大多数教程都使用控制变量,我相信正确使用它是值得学习的。。。非常感谢你的帮助 以下是我的示例代码: import tkinter as tk def checkbtn_callback(): print(btn_s

我刚开始研究tkinter以开发一些简单的GUI应用程序。然而,我很难弄清楚控制变量是如何使用的。我只是想检索CheckButton的状态,它是否被选中以及条目的文本,但是使用控制变量似乎不起作用。我知道my_entry.get也可以用来获取文本,但由于大多数教程都使用控制变量,我相信正确使用它是值得学习的。。。非常感谢你的帮助

以下是我的示例代码:

    import tkinter as tk

    def checkbtn_callback():
       print(btn_state.get())
       print(entry_text.get())

    top = tk.Tk()
    btn_state = tk.IntVar()
    checkbtn=tk.Checkbutton(top,text='testbutton',variable=btn_state,command=checkbtn_callback)
    checkbtn.grid()

    entry_text = tk.StringVar()
    entry = tk.Entry(top, text='text entry',textvariable=entry_text)
    entry.grid()

    tk.mainloop() 

当我说它不起作用时,这意味着无论用户输入如何,.get的值都不会改变。您的代码在OSX和Python2.7上都适用。当我单击checkbutton时,它会打印出它和entry小部件的正确值。你确定这个密码不适合你吗?你在哪个平台上运行这个?另外,尽管很多教程都使用控制变量,但它们通常是条目小部件不必要的负担。@BryanOakley感谢您提供的信息,这很有趣,我正在Windows 8上运行python 3.3。我很确定这对我不起作用,我真的不太明白,因为这和教程中的代码差不多。我不太确定这不起作用。你发布的代码要么有效,要么无效。不应该有任何灰色区域。@BryanOakley很抱歉造成混淆,控制变量在我的windows 8计算机上肯定不会更新,我只是再试一次。但它确实在我的Linux机器上工作。