gpt4 book ai didi

python - 在 Tkinter 中将颜色绑定(bind)到按钮会导致 TclError

转载 作者:行者123 更新时间:2023-12-01 04:35:25 25 4
gpt4 key购买 nike

我目前正在尝试在我的程序中实现代码,以在用户将鼠标光标悬停在按钮上时更新按钮颜色。程序识别悬停,但返回错误。

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1482, in __call__
return self.func(*args)
File "C:\Users\oiest\Documents\Programs\iNTMI\v1.1.3b\iNTMI.py", line 252, in <lambda>
achievementsButton.bind("<Enter>", lambda event: achievementsButton.configure(bg = "red"))
File "C:\Python34\lib\tkinter\__init__.py", line 1270, in configure
return self._configure('configure', cnf, kw)
File "C:\Python34\lib\tkinter\__init__.py", line 1261, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown option "-bg"

我在 Google 上搜索了如何在悬停时更改颜色,并找到了以下代码。尽管由于某种原因,它对我不起作用。我做错了什么?

    achievementsButton.bind("<Enter>", lambda event: achievementsButton.configure(bg = "red"))
achievementsButton.bind("<Leave>", lambda event: achievementsButton.configure(bg = "white"))

这是我最初定义成就按钮的代码。

    achievementsButton = ttk.Button(self, text = "Achievements", command = lambda: controller.show_frame(achievements), width = "25")

最佳答案

ttk.Button 实例没有 bgbackground 属性。解决办法有两种:

  • 使用普通的 tkinter.Button,它有一个 bg 属性。
  • 继续使用 ttk.Button,并使用样式对象对其进行配置。请参阅Using and customizing ttk styles了解更多信息。示例:

 

from Tkinter import *
import ttk
root = Tk()
s = ttk.Style()
s.configure("regular.TButton", background="red")
s.configure("onhover.TButton", background="white")
button = ttk.Button(root, style="regular.TButton")
button.pack()
button.bind("<Enter>", lambda event: button.configure(style="onhover.TButton"))
button.bind("<Leave>", lambda event: button.configure(style="regular.TButton"))
root.mainloop()

但是,这只会更改实际按钮后面区域的背景颜色,而不是按钮的表面。 This 帖子似乎表明不可能更改 ttk 按钮的表面颜色。

关于python - 在 Tkinter 中将颜色绑定(bind)到按钮会导致 TclError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com