gpt4 book ai didi

python - 当ttk.Button处于事件状态时,如何更改其前景色?

转载 作者:行者123 更新时间:2023-11-30 22:36:05 26 4
gpt4 key购买 nike

我有一个ttk.Button,我想改变它的颜色。

我通过以下方式做到了:

Style().configure('gray.TButton', foreground='black', background='gray')              
backButton = Button(self.bottomFrame, text="Back",
command=lambda: controller.ShowFrame("StartPage"),
style='gray.TButton')
backButton.pack(side='left')

它工作正常(屏幕截图):

enter image description here

但是如果这个小部件处于事件模式(鼠标光标在其中),它看起来很糟糕。背景变成白色,因此文本变得不可见。

问题:如何在事件模式下更改文本颜色?

编辑1:在此之后:

class BackSubmit(MainFrame):                             

def __init__(self, parent, controller, title):
MainFrame.__init__(self, parent, controller, title)

Style().configure('gray.TButton', foreground='white', background='gray')
backButton = Button(self.bottomFrame, text="Back",
command=lambda: controller.ShowFrame("StartPage"),
style='gray.TButton')
backButton.bind( '<Enter>', self.UpdateFgInAcSt )
backButton.pack(side='left')

Style().configure('blue.TButton', foreground='blue', background='light blue')
submitButton = Button(self.bottomFrame,
text="Submit settings",
command=lambda: self.submitSettings(),
style='blue.TButton')
submitButton.pack(side=RIGHT)

def submitSettings(self):
raise NotImplementedError("Subframe must implement abstract method")

def UpdateFgInAcSt(self, event):
backButton.configure(activeforeground='gray')

我收到错误:

backButton.configure(activeforeground='灰色')
NameError:未定义全局名称“backButton”

最佳答案

第一种方法:2 个函数绑定(bind)到 2 个不同的事件

你需要尝试一下 tkinter events.

如果您创建 2 个相应的函数,如下所示,

EnterLeave 事件将完全满足您的目标:

def update_bgcolor_when_mouse_enters_button(event):
backButton.configure(background='black') # or whatever color you want

def update_bgcolor_when_mouse_leaves_button(event):
backButton.configure(background='gray')

然后将这两个函数绑定(bind)到您的按钮:

backButton.bind('<Enter>', update_bgcolor_when_mouse_enters_button)
backButton.bind('<Leave>', update_bgcolor_when_mouse_leaves_button)

您可以使用文本颜色而不是按钮的背景颜色执行相同的操作,但使用 foreground 选项。

更便宜的方法:1 个函数绑定(bind)到 1 个事件

一种更便宜的方法是仅使用 Enter 事件并在 activeforground 上播放。替代选项。

这里您只需定义一个函数:

def update_active_foreground_color_when_mouse_enters_button(event):
backButton.configure(activeforeground='gray')

然后将此函数绑定(bind)到 Enter 事件,如下所示:

backButton.bind('<Enter>', update_active_foreground_color_when_mouse_enters_button)

关于python - 当ttk.Button处于事件状态时,如何更改其前景色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44323528/

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