tkinter IntVar 的问题
Posted
技术标签:
【中文标题】tkinter IntVar 的问题【英文标题】:Issues with tkinter IntVar 【发布时间】:2022-01-14 00:22:14 【问题描述】:我使用的是 python tkinter。代码应该做的是在勾选单选按钮“英里到公里”时打印“插入公里”。这是我的代码:
from tkinter import *
window = Tk()
def radio_button_activate():
print(radio_state.get())
radio_state = IntVar()
radio_1 = Radiobutton(text="km to miles", value=1,
variable=radio_state, command=radio_button_activate)
radio_2 = Radiobutton(text="miles to km", value=2,
variable=radio_state, command=radio_button_activate)
radio_1.grid(row=3, column=3)
radio_2.grid(row=3, column=4)
if radio_state.get() == 1:
print('insert km')
window.mainloop()
由于某种原因,“插入公里”不会打印。
type(radio_state.get())
是整数。
为什么这不起作用?非常感谢您的帮助。
【问题讨论】:
为什么你希望看到来自IntVar
的字符串?顺便说一句,您需要将if
块移动到radio_button_activate()
内。
您在创建单选按钮大约一毫秒后调用radio_state.get()
。
【参考方案1】:
执行以下代码时,没有选择单选按钮,因此 if 条件将被评估为False
并且不会打印任何内容。
if radio_state.get() == 1:
print('insert km')
你需要把上面的 if 块移动到radio_button_activate()
:
def radio_button_activate():
print(radio_state.get())
if radio_state.get() == 1:
print('insert km')
else:
print('insert miles')
【讨论】:
非常感谢!但是为什么没有选择单选按钮呢?我是初学者,非常感谢您的解释。radio_state
的初始值如果在创建时没有显式设置则为零,因此不会选择单选按钮。我建议您阅读一些关于 tkinter 应用程序所基于的 event-driven programming
的教程。以上是关于tkinter IntVar 的问题的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 StringVar 而不是 IntVar 时 Tkinter 的单选按钮都开始选中?