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