将Tk脚本转为CTk后按钮state状态判断失效问题求助
修复后的CustomTkinter脚本
问题出在两个核心点:
- 变量名
Button和CustomTkinter的按钮类CTkButton重名,导致代码逻辑混淆 - CustomTkinter中按钮的
state属性取值为字符串类型("disabled"/"normal"),而非原生tkinter里的DISABLED常量,直接用DISABLED做比较会触发错误
修复后的代码:
from customtkinter import * def ChangeState(): my_button.configure(state="disabled") # 使用字符串"disabled"进行状态判断 if my_button['state'] == "disabled": my_button.configure(fg_color="Green") window = CTk() # 变量名改为my_button,避免与类名冲突 my_button = CTkButton(window, text="Button", hover=False, command=ChangeState) my_button.pack() window.mainloop()
额外提示:在大型脚本中,务必避免使用和内置类/函数重名的变量名;同时CustomTkinter组件的属性规则和原生tkinter存在差异,编写逻辑时需注意对应属性的取值类型。
内容的提问来源于stack exchange,提问作者Royy
相关产品推荐
相关产品推荐

