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

Python中CTkRadioButton允许多选问题的解决方法咨询

解决CTkRadioButton可同时选中的问题

CTkRadioButton要实现互斥单选,必须让它们绑定同一个控制变量,你的代码里缺少这个关键参数,所以每个按钮都是独立状态,才会出现同时被选中的情况。

具体修正步骤:

  1. 创建一个tkinter.IntVar()变量(因你的按钮value是整数类型,用IntVar适配),可以直接设置默认选中值;
  2. 给每个CTkRadioButton添加variable参数,指向这个共同的变量。

修正后的完整代码:

import customtkinter
import tkinter

# 假设你已定义change_size函数和pen_size_frame容器
def change_size(size):
    print(f"笔大小设置为: {size}")

pen_size_frame = customtkinter.CTkFrame()

# 创建共享的控制变量,默认选中value=3的按钮
pen_size_var = tkinter.IntVar(value=3)

pen_size_1 = customtkinter.CTkRadioButton(pen_size_frame, 
                                        text="Small", 
                                        value=3, 
                                        variable=pen_size_var,  # 添加共享变量
                                        command=lambda: change_size(3),
                                        state="normal",
                                        fg_color="#ad85b9",
                                        hover_color= "#a655be",
                                        )
pen_size_1.pack(side="left")


pen_size_2 = customtkinter.CTkRadioButton(pen_size_frame, 
                                        text="Medium", 
                                        value=5, 
                                        variable=pen_size_var,  # 添加共享变量
                                        command=lambda: change_size(5), 
                                        fg_color="#ad85b9",
                                        hover_color= "#a655be",
                                        
                                        )
pen_size_2.pack(side="left")

pen_size_3 = customtkinter.CTkRadioButton(pen_size_frame, 
                                        text="Large", 
                                        value=7, 
                                        variable=pen_size_var,  # 添加共享变量
                                        command=lambda: change_size(7), 
                                        state="normal",
                                        fg_color="#ad85b9",
                                        hover_color= "#a655be"
                                        )
pen_size_3.pack(side="left")

# 窗口启动示例
pen_size_frame.pack(padx=20, pady=20)
customtkinter.CTkTk().mainloop()

修改后,三个单选按钮会自动实现互斥:点击任意一个按钮,其他已选中的按钮会自动取消选中状态。

内容的提问来源于stack exchange,提问作者Lina Al-fawzan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:28:26