Python:下拉菜单

时间:2011-11-27 16:30:10

标签: python wxpython

我在wxPython中创建了这个下拉菜单:

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

我的问题是当鼠标指向文件自动打开所有菜单并看到新建,打开,退出时。请参阅此示例here以了解我想要做什么。

2 个答案:

答案 0 :(得分:1)

我相信它超出了跨平台UI库的“精神”,无法改变操作系统的UI行为。

在大多数操作系统中,鼠标悬停时菜单不会自动弹出,因此wxWindows也不会这样做。

可能有一种方法可以让鼠标悬停监听器进入菜单,并自动弹出,但我建议不要这样做,因为这不是通常的行为(许多网站除外)。也可能是,因为它不能可靠地在wxWindows支持的所有操作系统上运行。

我无法向您提供任何细节,因为我实际上从未使用过wxWindows。我只在Linux上工作,直接GTK更明智。

答案 1 :(得分:1)

您可以使用FlatMenu,一个用纯Python编写的自定义小部件来执行您想要的操作。你自己可以比wxWidgets版本更容易破解它。我们很清楚,wxPython尽可能地包装本机小部件,所以如果这是操作系统上的正常行为,那么wxPython也会这样做。这就是为什么我认为你应该尝试FlatMenu。请参阅此处获取文档和示例:http://xoomer.virgilio.it/infinity77/AGW_Docs/flatmenu_module.html#flatmenu