我刚刚在tkinter中完成了我的第一步,而且我一直想弄清楚为什么这段代码无效:
from tkinter import *
from tkinter import ttk
root = Tk()
spam = StringVar()
checkbutton = ttk.Checkbutton(
root, text="SPAM?", variable=spam, onvalue="Yes, SPAM!", offvalue="Boo, SPAM!")
checkbutton.pack()
print(spam.get())
root.mainloop()
变量spam
为空,无论我的checkbutton
是否已选中或未选中。查看示例和文档也是一个死胡同。为什么我的变量仍然是空的?
答案 0 :(得分:1)
替换:
print(spam.get())
使用:
checkbutton['command'] = lambda arg=spam: print(arg.get())
为了看到变量确实存储了值。
问题是当您的print
被称为spam.get()
等于""
时:
spam = StringVar()
与:
相同spam = StringVar(value="")
checkbutton
最初是默认的on-on,nor-off状态(因为spam
既不是off也不是on值),但很难注意到ttk版本(如果有的话),替换:
checkbutton = ttk.Checkbutton(...
使用:
checkbutton = Checkbutton(...
使用tkinter中的默认检查按钮,显示更加鲜明。
另请注意,Checkbutton
需要用于呼叫spam.set(checkbutton['onvalue'])
或spam.set(checkbutton['offvalue'])
。