我在 tkinter 中定义了一个按钮,其背景颜色与屏幕相同,因此它只是屏幕上的文本。我遇到的问题是,当单击按钮时,背景会在单击时变为白色,这与深色背景形成鲜明对比。我正在尝试禁用此功能。我尝试设置
activebackground='SystemButtonFace'
,但由于某种原因这不起作用。我不太确定发生了什么事。这是定义按钮的代码。
tk.Button(main_canvas, activebackground='SystemButtonFace', bg='#404040')
当然,可以删除 tkinter 按钮上的“点击动画”或突出显示效果。
遇到问题的原因是
SystemButtonFace
在 Windows 上是一个主题颜色名称,在其他操作系统上可能无法按预期工作。
以下是删除按钮点击动画的几种方法:
1. 将
highlightthickness
设置为 0:
这将删除按钮周围的边框,从而消除突出显示效果。
tk.Button(main_canvas, activebackground='#404040', bg='#404040', highlightthickness=0)
2. 将
activebackground
设置为与
bg
相同的颜色:
这将使活动状态(单击时)的背景颜色与正常状态相同。已经尝试过了,但请确保
activebackground
颜色与
bg
颜色完全匹配。
tk.Button(main_canvas, activebackground='#404040', bg='#404040')
3. 使用
bind
方法覆盖按钮事件:
这为提供了对按钮行为的更多控制。可以绑定到
<Button-1>
事件(鼠标左键单击)并防止默认行为。
def button_clicked(event):
# 自己的按钮点击逻辑
return 'break' # 阻止默认行为
button = tk.Button(main_canvas, bg='#404040')
button.bind('<Button-1>', button_clicked)
4. 使用
ttk
模块中的
Button
小部件:
ttk.Button
小部件通常提供比标准
tk.Button
小部件更现代的外观和行为,并且可能不会出现相同类型的点击动画。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
style = ttk.Style()
style.configure("TButton", background="#404040", activebackground="#404040")
button = ttk.Button(root, text="My Button")
button.pack()
root.mainloop()
请尝试这些解决方案中的一种或多种,看看哪种解决方案最适合的需求。
标签:python,tkinter,tkinter-button From: 78771275