tkinter 中的复选按钮未将值存储到变量中
Checkbutton in tkinter is not storing values into variables
我刚刚开始使用 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
是选中还是未选中。查看示例和文档也是死路一条。为什么我的变量还是空的?
替换:
print(spam.get())
与:
checkbutton['command'] = lambda arg=spam: print(arg.get())
为了查看变量确实存储了值。
问题是当您的 print
被调用时 spam.get()
等于 ""
为:
spam = StringVar()
等同于:
spam = StringVar(value="")
checkbutton
最初处于默认的既不开启也不关闭状态(因为 spam
既不是关闭也不是开启值),但很难注意到 ttk 版本(如果有的话),替换:
checkbutton = ttk.Checkbutton(...
与:
checkbutton = Checkbutton(...
使用tkinter中的默认Checkbutton,它的显示更加鲜明。
另请注意,需要使用 Checkbutton
才能调用 spam.set(checkbutton['onvalue'])
或 spam.set(checkbutton['offvalue'])
。
我刚刚开始使用 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
是选中还是未选中。查看示例和文档也是死路一条。为什么我的变量还是空的?
替换:
print(spam.get())
与:
checkbutton['command'] = lambda arg=spam: print(arg.get())
为了查看变量确实存储了值。
问题是当您的 print
被调用时 spam.get()
等于 ""
为:
spam = StringVar()
等同于:
spam = StringVar(value="")
checkbutton
最初处于默认的既不开启也不关闭状态(因为 spam
既不是关闭也不是开启值),但很难注意到 ttk 版本(如果有的话),替换:
checkbutton = ttk.Checkbutton(...
与:
checkbutton = Checkbutton(...
使用tkinter中的默认Checkbutton,它的显示更加鲜明。
另请注意,需要使用 Checkbutton
才能调用 spam.set(checkbutton['onvalue'])
或 spam.set(checkbutton['offvalue'])
。