2011-11-27 73 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