Tkinter CheckButton无法获取正确选中状态值问题求助
你的问题出在获取变量值的时机不对:代码里var_cb1_val = var_cb1.get()是在GUI启动前执行的,这时候用户还没机会操作复选框,所以拿到的永远是你初始设置的0。
要实现选中打印1、未选中打印0的效果,需要在用户操作复选框后再去获取变量值,下面给两种可行的方案:
方案1:添加按钮触发值的获取与打印
通过按钮点击事件来获取当前复选框的状态,代码如下:
import tkinter as tk win = tk.Tk() win.title('My Window') win.geometry('100x100') l = tk.Label(win, width=20, text='MultipleReplace') l.pack() var_cb1 = tk.IntVar() var_cb1.set(0) cb1 = tk.Checkbutton(win, text='Yes', variable=var_cb1, onvalue=1, offvalue=0) cb1.pack(side=tk.TOP) # 定义获取值的函数 def print_checkbox_value(): var_cb1_val = var_cb1.get() print('The selected value is : ', var_cb1_val) # 添加按钮,点击时调用函数 btn = tk.Button(win, text='Check Value', command=print_checkbox_value) btn.pack() win.mainloop()
方案2:绑定复选框的点击事件
每次点击复选框后自动打印当前值,代码如下:
import tkinter as tk win = tk.Tk() win.title('My Window') win.geometry('100x100') l = tk.Label(win, width=20, text='MultipleReplace') l.pack() var_cb1 = tk.IntVar() var_cb1.set(0) # 定义点击后触发的函数 def on_checkbox_click(event): var_cb1_val = var_cb1.get() print('The selected value is : ', var_cb1_val) cb1 = tk.Checkbutton(win, text='Yes', variable=var_cb1, onvalue=1, offvalue=0) cb1.pack(side=tk.TOP) # 绑定点击释放事件 cb1.bind('<ButtonRelease-1>', on_checkbox_click) win.mainloop()
内容的提问来源于stack exchange,提问作者dallascow
相关产品推荐
相关产品推荐

