微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 wx FlatMenu 上更改颜色

如何解决如何在 wx FlatMenu 上更改颜色

我正在尝试创建一个外观可以完全自定义的弹出菜单。由于 wx.Menu 基于本机小部件,我尝试使用 FlatMenu,但即使文档指出这种自定义是可能的,我也未能找到如何去做(菜单文本颜色除外)。有人可以告诉我如何在以下代码中更改 FlatMenu 的背景和边框颜色(我不使用 MenuBar,因为我想创建一个弹出菜单)? 或者,如果我错误地认为 FlatMenu 可以实现,有人可以指出另一个允许这样做的模块吗?

import wx

from wx.lib.agw.flatmenu import FlatMenu as FlatMenu,FlatMenuItem as FlatMenuItem
class MyFrame(wx.Frame):

    def __init__(self,parent):

        wx.Frame.__init__(self,parent,-1,"FlatMenu Demo")

        panel = wx.Panel(self,-1)
        self.btn = wx.Button(panel,"Hello",(15,12),(100,120))
        self.btn.Bind(wx.EVT_BUTTON,self.pop)

        self.menubar = FlatMenuBar(self,-1)
        self.orderMenu = FlatMenu(panel)
        self.menubar.SetBackgroundColour(wx.RED)
         
        item_title = FlatMenuItem(self.orderMenu,1,"Title","Sort by movie title",wx.ITEM_RAdio,None)
        self.Bind(wx.EVT_MENU,self.selected,id=1)
        self.orderMenu.AppendItem(item_title)
        self.Bind(wx.EVT_MENU,item_title)
        
        item_year = FlatMenuItem(self.orderMenu,2,"Year","Sort by year",id=1)
        self.orderMenu.AppendItem(item_year)
        
        self.Bind(wx.EVT_MENU,item_year)
        
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        main_sizer.Add(panel,wx.EXPAND)

        self.SetSizer(main_sizer)
        main_sizer.Layout()


    def selected(self,event):
        print(event)
    
    
    def pop(self,event):
        print("pop")
        x,y = self.btn.GetScreenPosition()
        y = y+self.btn.GetSize()[1]
        self.orderMenu.Popup(wx.Point(x,y),self)

# our normal wxApp-derived class,as usual

app = wx.App(0)

frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()

app.MainLoop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。