【问题标题】:In Python3/tkinter Is there a way to change the background color of the arrows in a ttk.Menubutton?在 Python3/tkinter 中有没有办法改变 ttk.Menubutton 中箭头的背景颜色?
【发布时间】:2016-06-30 16:12:49
【问题描述】:

我有一个使用 ttk 小部件的 tkinter 界面,并且希望在 macOSX 中有一个带有灰色箭头的 ttk.MenuButton。这可能吗?

我正在使用此代码创建我的Menubuttonself.topframe 是一个ttk.Frame 对象):

self.label_menu_btn = ttk.Label(self.topframe, font=self.btnFont, foreground=self.btnTxtColor, text="Copiar…")
self.menu_btn =  ttk.Menubutton (self.topframe, text="•••")
self.menu_btn.menu  =  Menu (self.menu_btn, tearoff=0)
self.menu_btn["menu"] =  self.menu_btn.menu

self.menu_btn.menu.add_command(label="Número de objeto", command=self.copiar_obj_num, accelerator="Command+c")

这是我的按钮的样子:

这是我在另一个应用中发现的,类似于我想要完成的:

【问题讨论】:

  • 它是蓝色的,因为它使用的是 OSX 系统颜色;如果您将其设置为灰色,则意味着它已被禁用,这可能会让您的用户感到困惑。
  • 是的。在这方面,似乎即使是 Apple 在他们自己的应用程序中也不是很一致。在 iTunes、Pages 和 Mail 中,他们使用的不是蓝色,但在某些地方会出现蓝色背景。在我看来,他们正在避免工具栏中的蓝色箭头,并且只在按钮出现在窗口框架本身时才让它们保留......

标签: python-3.x tkinter ttk


【解决方案1】:

要使用 ttk 执行此操作,您需要先编辑样式,然后将其应用到小部件。它看起来像这样。

s = ttk.Style()
s.configure('MyStyle.TMenubutton', background='pink')

var = tk.StringVar()
widget = ttk.OptionMenu(root, var, 'ANY', 'ANY', '0', '1', style="MyStyle.TMenubutton")

其中“MyStyle”是您正在创建的样式的名称,“TMenubutton”是您从中派生出来的样式的名称。

【讨论】:

  • 嗨!已经很久了,但我去试试看。您的方法似乎适用于某些主题,但不适用于 ttk 在 macOS 上使用的默认 aqua 主题。它可能在某处被硬编码......
  • 我将其标记为已解决,因为您的方法在一定程度上有效,并且可能对其他用户有用。
【解决方案2】:

如果您想让按钮的颜色(“...”所在的位置为灰色,那么您所要做的就是在 ttk.Menubutton 行中插入“bg”选项,如下所示:

self.menu_btn =  ttk.Menubutton (self.topframe, text="•••", bg= "gray")

【讨论】:

  • 实际上,我试图得到的是箭头侧(按钮右侧)的灰色。简单地说,我只是想要整个按钮都是灰色的。
猜你喜欢
  • 2020-12-10
  • 2020-07-09
  • 2020-10-02
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 2019-09-12
  • 2014-10-13
  • 2021-12-22
相关资源
最近更新 更多