【发布时间】:2018-10-20 22:03:58
【问题描述】:
我知道这似乎是一个愚蠢的问题,但我已经阅读了我能找到的所有相关/类似问题,并且我很确定我遇到了不同的问题。有关我已避免的类似问题的列表,请参阅此问题的结尾。
我正在尝试使用 Tkinter Checkbutton。我几乎一字不差地使用了文档 (here) 中的示例代码。
from tkinter import Tk, Checkbutton, IntVar
class MyGUI:
def __init__(self, window):
self.var = IntVar()
self.c = Checkbutton(window,
text="Enable Tab",
variable=self.var,
command=self.cb)
self.c.pack()
def cb(self):
print("self.var is", self.var.get())
root = Tk()
gui = MyGUI(root)
root.mainloop()
root.destroy()
我唯一改变的是从 cb 方法中删除 event 参数,因为据我所知它没有被用于任何事情,并且检查按钮没有通过任何 event到cb。
我的问题是存储检查按钮值的变量总是读取0,即使检查了检查按钮:
我不知道我做错了什么。我知道我已经避免了以下陷阱:
-
Using the wrong variable -- 我用的是 Tk 的
IntVar,不是 pythonint - Using daft colours
- Using the same attribute name for the button and its variable -- 我已将按钮和变量作为单独的属性保存到我的类中。
- Chaining the Checkbox creation with the place method and accidentally storing
None
另外,当我从a question with a similar issue 运行代码时,我得到相同的行为——复选框总是返回 False/0——即使该问题被标记为已解决。
我正在使用以下版本的 Anaconda python:
Python 3.5.4 |Anaconda custom (64-bit)| (default, Nov 8 2017, 14:34:30)
[MSC v.1900 64 bit (AMD64)]
IPython 6.2.1 -- An enhanced Interactive Python.
【问题讨论】:
-
我在 3.2 python,Tk 版本 8.5 中得到了预期的输出
-
请附上您的进口声明。我们无法确定您使用的是 tkinter Checkbutton 还是 ttk Checkbutton。
-
@BryanOakley 谢谢,将导入语句添加到问题中。
-
那个小视频中的代码与您问题中发布的代码不同。至少有一个区别是此代码使用
self.c,而视频中的代码仅使用c。我认为这并不重要,但您需要确保发布的代码准确反映了您的真实代码。 -
您问题中的代码不会运行。导入语句有语法错误。请提供您在系统上运行的实际代码。不过,即使我解决了这个问题,代码对我来说也能正常工作。
标签: python user-interface button tkinter