以编程方式在菜单栏中打开WXpython菜单

时间:2015-03-10 23:32:54

标签: python wxpython

我正在尝试在wxpython中设置修改的ALT +键加速器,它将打开菜单栏中的菜单,但不按ALT键。因此,按下' R'理论上打开Run菜单,下面我的例子中的关键字,但到目前为止我尝试过的所有东西都不起作用。 (我已尝试将自定义事件发送到菜单项,菜单栏等。)似乎wx.Menu类没有任何类型的Popup或Show方法,否则这将是理想的。当然有PopupMenu,但不能用于菜​​单栏中的菜单。并且菜单栏没有任何有用的方法可以弹出一个菜单,据我所知,

import wx

class MainFrame(wx.Frame):
    def __init__(self, parent, *args, **kwargs):
        wx.Frame.__init__(self, parent, *args, **kwargs)        

        self.make_menu_bar()

        # INSERT MAGIC CODE HERE TO OPEN THE RUN MENU WITHOUT CLICKING ON IT

    def make_menu_bar(self):
        self.menuRun = wx.Menu()
        self.menuRunGo = wx.MenuItem(self.menuRun, -1, "&Go", "", wx.ITEM_NORMAL)
        self.menuRun.AppendItem(self.menuRunGo)

        self.menuBar = wx.MenuBar()
        self.menuBar.Append(self.menuRun, "&Run")
        self.SetMenuBar(self.menuBar)

if __name__=='__main__':

    app = wx.App()

    frame = MainFrame(None)
    frame.Show()

    app.MainLoop()

编辑以下是使用加速器尝试此操作的代码段

import wx

class MainFrame(wx.Frame):
    def __init__(self, parent, *args, **kwargs):
        wx.Frame.__init__(self, parent, *args, **kwargs)        

        self.make_menu_bar()

        accelEntries = []
        accelEntries.append((wx.ACCEL_NORMAL, ord("R"), self.menuRunId))
        accelTable  = wx.AcceleratorTable(accelEntries)
        self.SetAcceleratorTable(accelTable)

    def make_menu_bar(self):
        self.menuRun = wx.Menu()
        self.menuRunGo = wx.MenuItem(self.menuRun, -1, "&Go", "", wx.ITEM_NORMAL)
        self.menuRun.AppendItem(self.menuRunGo)

        self.menuBar = wx.MenuBar()
        self.menuRunId = self.menuBar.Append(self.menuRun, "&Run")
        self.SetMenuBar(self.menuBar)

if __name__=='__main__':

    app = wx.App()

    frame = MainFrame(None)
    frame.Show()

    app.MainLoop()

0 个答案:

没有答案