Python中CTkRadioButton允许多选问题的解决方法咨询
CTkRadioButton要实现互斥单选,必须让它们绑定同一个控制变量,你的代码里缺少这个关键参数,所以每个按钮都是独立状态,才会出现同时被选中的情况。
具体修正步骤:
- 创建一个
tkinter.IntVar()变量(因你的按钮value是整数类型,用IntVar适配),可以直接设置默认选中值; - 给每个
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
相关产品推荐
相关产品推荐

