2011-11-27 35 views
0

我在wxPython中創建這個下拉菜單:的Python:下拉菜單

import wx 


class Example(wx.Frame): 

    def __init__(self, *args, **kwargs): 
     super(Example, self).__init__(*args, **kwargs) 

     self.InitUI() 

    def InitUI(self): 

     menubar = wx.MenuBar() 

     fileMenu = wx.Menu() 
     fileMenu.Append(wx.ID_NEW, '&New') 
     fileMenu.Append(wx.ID_OPEN, '&Open') 
     fileMenu.Append(wx.ID_SAVE, '&Save') 
     fileMenu.AppendSeparator() 

     imp = wx.Menu() 
     imp.Append(wx.ID_ANY, 'Import newsfeed list...') 
     imp.Append(wx.ID_ANY, 'Import bookmarks...') 
     imp.Append(wx.ID_ANY, 'Import mail...') 

     fileMenu.AppendMenu(wx.ID_ANY, 'I&mport', imp) 

     qmi = wx.MenuItem(fileMenu, wx.ID_EXIT, '&Quit\tCtrl+W') 
     fileMenu.AppendItem(qmi) 

     self.Bind(wx.EVT_MENU, self.OnQuit, qmi) 

     menubar.Append(fileMenu, '&File') 
     self.SetMenuBar(menubar) 

     self.SetSize((350, 250)) 
     self.SetTitle('Submenu') 
     self.Centre() 
     self.Show(True) 

    def OnQuit(self, e): 
     self.Close() 

def main(): 

    ex = wx.App() 
    Example(None) 
    ex.MainLoop()  


if __name__ == '__main__': 
    main() 

我的問題是,當鼠標指向文件automaticaly打開所有菜單,看到新建,打開,Exit.see這個例子here瞭解我想要做什麼。

回答

1

您可能可以使用FlatMenu,一個用純Python編寫的自定義小部件來完成您想要的操作。你肯定可以比wxWidgets更容易地攻擊它。我們很清楚,wxPython儘可能地包裝了原生的小部件,所以如果這在操作系統上是正常的行爲,那麼wxPython也會這樣做。這就是爲什麼我認爲你應該嘗試FlatMenu。看到這裏的文件和一個例子:http://xoomer.virgilio.it/infinity77/AGW_Docs/flatmenu_module.html#flatmenu

+0

FlatMenu?凸起的菜單?你可以給我一個例子來更好地理解。 – TLSK

+0

它位於wx.lib.agw.flatmenu。我也在我的答案中鏈接了一個例子。 –

+0

謝謝,你救了我 – TLSK

1

我相信它是超越跨平臺UI庫的「精神」來改變操作系統UI行爲。

在大多數操作系統中,菜單不會自動彈出,因此wxWindows也不會這樣做。

可能有一種方法可以將鼠標懸停的偵聽器分配給菜單,並自動彈出,但我建議不要這樣做,因爲這不是通常的行爲(許多網站除外)。也可能這是而不是,因爲它不能可靠地在wxWindows支持的所有操作系統上工作。

我不能給你任何細節,因爲我從來沒有使用過wxWindows。我只使用Linux,直接GTK更明智。

+0

感謝您的答案。我搜索了很多天的解決方案,我找不到任何東西,也許我必須忘記這個想法。 – TLSK