如何从ttk.Menubutton中删除箭头(+奖金问题)

问题描述 投票:0回答:1

我想要设置菜单栏的样式,并且想要删除菜单按钮箭头。我知道,我可以将它们着色为与背景相同的颜色,但是对于任何其他状态(悬停等),我也必须这样做。使用 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

python python-3.x tkinter ttk
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.