Python:下拉菜单
我在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()
我的问题是,当鼠标指向“文件”时,所有的菜单项会自动打开,显示“新建”、“打开”、“退出”。你可以看看这个例子 这里,这样你就能明白我想要做的是什么。
2 个回答
1
我认为,跨平台的用户界面库不应该去改变操作系统的界面行为。
在大多数操作系统中,菜单不会在鼠标悬停时自动弹出,所以wxWindows也不这样做。
可能有办法给菜单添加一个鼠标悬停的监听器,让它自动弹出,但我不建议这样做,因为这不是常见的行为(除了很多网站)。也有可能这根本就做不到,因为在wxWindows支持的所有操作系统上,这种方式可能不稳定。
我不能给你具体的细节,因为我其实从来没有用过wxWindows。我只在Linux上工作,直接使用GTK会更合理一些。
1
你可以试试FlatMenu,这是一个用纯Python写的自定义小部件,可能能满足你的需求。其实自己动手改造它会比wxWidgets版本简单多了。为了让你明白,wxPython会尽量使用操作系统本身的控件,所以如果在你的操作系统上是那样的表现,wxPython也会这样做。这就是我觉得你应该尝试FlatMenu的原因。你可以在这里找到文档和示例:http://xoomer.virgilio.it/infinity77/AGW_Docs/flatmenu_module.html#flatmenu