我想要设置菜单栏的样式,并且想要删除菜单按钮箭头。我知道,我可以将它们着色为与背景相同的颜色,但是对于任何其他状态(悬停等),我也必须这样做。使用 style.configure 禁用它会容易得多...
仅供参考,这是我目前使用的样式:
class Styles:
@staticmethod
def apply_theme():
style = ttk.Style()
style.theme_use('clam')
@staticmethod
def style_menubar(style: ttk.Style):
background_color = "#130E0B"
style.configure("Menubar.TFrame",
background=background_color)
style.configure("Menu.TMenubutton",
arrowcolor=background_color,
background=background_color,
foreground="#EDEDED",
activebackground="#5C5C5C",
relief='flat')
和菜单栏类:
class Menubar(ttk.Frame):
def __init__(self, parent):
super().__init__(parent)
Styles.style_menubar(ttk.Style())
self.configure(style="Menubar.TFrame")
self.create_menubar(parent)
def create_menubar(self, root):
# Create the File menubutton
file_menubutton = ttk.Menubutton(self, text="File", style="Menu.TMenubutton")
file_menu = Menu(file_menubutton, tearoff=0)
file_menu.add_command(label="New")
file_menu.add_command(label="Open")
file_menu.add_command(label="Save")
file_menu.add_separator()
file_menu.add_command(label="Exit", command=root.quit)
file_menubutton["menu"] = file_menu
file_menubutton.pack(side=tk.LEFT, fill=tk.NONE)
# Additional buttons...
如何缩小菜单按钮的宽度?目前,有文本,然后是一个大间隙,然后是菜单按钮。使用填充或间距没有帮助。无论如何,当简单地重新着色箭头时,这是必要的。
我尝试使用ipadx,fill=tk.NONE;填充=(0,0),间距3=0,活动指示器= 0
不幸的是,
tkinter
没有提供直接通过style.configure
方法完全禁用箭头的方法。
所以,最好的方法就是按照你说的去做。
def style_menubar(style: ttk.Style):
background_color = "#130E0B"
style.configure("Menubar.TFrame",
background=background_color)
style.configure("Menu.TMenubutton",
arrowcolor=background_color, # Same as background to "hide" it
background=background_color,
foreground="#EDEDED",
activebackground="#5C5C5C",
relief='flat',
compound="left") #Make it less noticeable
我添加这段代码只是因为。
另外,要减小宽度,可以使用
anchor
方法-
padding=(0, 0), # Remove internal padding
width=10, # Set fixed width
anchor="center") # Center text within the button
将此添加到
style.configure