You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter CheckButton无法获取正确选中状态值问题求助

解决Tkinter CheckButton值始终为0的问题

你的问题出在获取变量值的时机不对:代码里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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:35:18