Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式打开菜单栏中的WXpython菜单_Python_Wxpython - Fatal编程技术网

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

以编程方式打开菜单栏中的WXpython菜单,python,wxpython,Python,Wxpython,我试图在wxpython中设置修改后的ALT+键加速器,它将打开菜单栏中的菜单,但不按ALT键。因此,在我下面的示例中,按“R”键理论上会打开Run菜单,但我迄今为止尝试的所有方法都不起作用。我曾尝试将自定义事件发送到菜单项、菜单栏等。似乎wx.menu类没有任何类型的弹出或显示方法,否则这将是理想的。当然有弹出菜单,但不能用于菜单栏中的菜单。据我所知,菜单栏没有任何有用的方法来弹出菜单 import wx class MainFrame(wx.Frame): def __init__

我试图在wxpython中设置修改后的ALT+键加速器,它将打开菜单栏中的菜单,但不按ALT键。因此,在我下面的示例中,按“R”键理论上会打开Run菜单,但我迄今为止尝试的所有方法都不起作用。我曾尝试将自定义事件发送到菜单项、菜单栏等。似乎wx.menu类没有任何类型的弹出或显示方法,否则这将是理想的。当然有弹出菜单,但不能用于菜单栏中的菜单。据我所知,菜单栏没有任何有用的方法来弹出菜单

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()

我想你可以用。。。结合wx.ACCEL_NORMAL,ord'R'无法解决问题-我不想启动项目run,我想实际打开run菜单。我会把我的名字编辑得更清楚也许如果你给它和run menu相同的菜单id。。。大概我不确定…但菜单没有Id-它们是严格意义上的容器,这就是为什么你不能将事件附加到菜单项的Id。。。而且每个菜单都必须可以通过菜单项my_id_i_want=self.menuBar.Appendself.menuRun访问,我想运行(&R)