2014-03-06 12 views
3

如果我有一個wx.Menu(在wx.MenuBar中,在框架的頂部,就像正常一樣) - 我怎樣才能使菜單下降,集中精力,不用點擊它。我想要的行爲是因爲,如果用戶已經按下該菜單中的鍵盤快捷鍵快捷鍵(這樣按Alt + F例如,對於&文件菜單)如何以編程方式在wxPython中下拉wx.Menu

+0

答案爲止排序錯過了標記,但我不知道如何使這個問題更加清晰。我希望在代碼中(不是由用戶輸入引起的)模擬如果按下菜單的加速鍵會發生什麼情況,導致菜單下拉並獲得焦點,但不模擬任何特定項目上的點擊) – Ryan

回答

0

發現定義爲在程序菜單快捷鍵,通過給定的例子瞭解

例如:

file_menu=wx.Menu() 
menubar=wx.MenuBar() 
menubar.Append(file_menu,"&File") 
self.SetMenuBar(menubar) 

現在我們可以按Alt + F訪問文件菜單(在這裏)。

如果我們還有其他菜單,按ALT後,它會指向菜單欄的第一個字母,從中可以按menu_item的名稱按下一個鍵。

1

我有相同的要求,並找到使用PopupMenu函數的簡單方法。它不從菜單對象調用,而是從菜單的父級(窗口,框架等)中調用。

要確保菜單出現在特定位置(無論您的鼠標是否在指定位置),請將其提供給PopupMenu函數也是一個位置參數。

在下面的示例中,我轉動了一個打開菜單的platebtn,只有在向右箭頭的小區域右側點擊時,打開菜單時纔會打開一個按鈕,該按鈕以同樣的方式打開相同的菜單它的表面上的任何地方。

例子:

import wx 
import wx.lib.platebtn as platebtn 
class MyFrame(wx.Frame): 
    def __init__(self, parent, ID, title): 
     wx.Frame.__init__(self, parent, ID, title, size=(300, 250)) 
     wx.Panel(self,-1, style=wx.SUNKEN_BORDER) 
     droparrow = platebtn.PB_STYLE_DROPARROW | platebtn.PB_STYLE_SQUARE | platebtn.PB_STYLE_GRADIENT 
     self.btn1 = platebtn.PlateButton(self, wx.ID_ANY, label=" File ", style=droparrow) 
     self.btn1.SetPressColor(wx.LIGHT_GREY) 
     self.menu1 = wx.Menu() 
     self.menu1.Append(1, "New") 
     self.menu1.Append(2, "Open") 
     self.menu1.Append(3, "Exit") 
     sm = wx.Menu() 
     sm.Append(8, "sub item 1") 
     sm.Append(9, "sub item 1") 
     self.menu1.AppendMenu(7, "Test Submenu", sm) 
     self.btn1.SetMenu(self.menu1) 
     self.Bind(wx.EVT_BUTTON, self.OnFile, self.btn1) 
    def OnFile(self, event): 
     self.btn1.PopupMenu(self.menu1, pos=(1, self.btn1.GetSize()[1])) 
app = wx.App(False) 
frame = MyFrame(None, -1, "PopupMenu example") 
frame.Show() 
app.MainLoop() 
相關問題