窗体上有一个 tkinter.Button 按钮。配置没有什么异常:
mybutton.configure(background = "blue", disabledforeground = "white", foreground = "white", image = "image.png")
有一个与按钮相关的漫长过程。为了防止用户在此过程中再次点击该按钮,我将其阻止:
mybutton.configure(state = "disabled")
当该过程完成后,我将其释放:
mybutton.configure(state = "normal")
在我看来,这种防止重新启动问题的方法看起来或多或少。但这不是重点。按钮的背景颜色在锁定状态下保持不变,文本颜色也保持不变。但图像的背景变为灰色。图像本身的背景是透明的。这使我能够轻松更改按钮的背景颜色,在整个应用程序中使用比无聊的标准颜色更有趣的颜色风格。有没有办法阻止 tkinter 的“友好”帮助更改锁定按钮的颜色?我翻阅了文档很长时间,但没有找到任何东西。只有两个选择:
- 完全避免 tkinter。这并没有那么快,也不能保证不产生“效果”。
- 将整个按钮变灰。首先,为什么只支持灰色?如果明天“硫化”默认变成“蓝化”怎么办?温和地说,我的应用程序中颜色风格化背景下的“归零”看起来很丑陋。
我不希望有解决方案,但以防万一......我可能错过了一些东西。 ttk,ttk 样式 - 已经尝试过,零。
据我了解,问题是这样的:
然后我建议继承tk.Button并简单地自定义您的按钮:
为了清楚起见,附加示例:
我自己找到了一个解决方案,紧凑而简单,尽管是一种解决方法。 tkinter和ttk写得不好,永远不会写。这意味着我们需要解决这个问题。因此,在表单中有一个与冗长过程相关的按钮:
此前,问题是这样解决的。为了防止用户在执行过程中再次单击同一按钮,必须阻止该按钮:
现在问题将这样解决: