所以我想在wxPython中禁用和启用wxMenuBar。基本上,整个事情变得灰暗。
如果查看文档:{{3}} ...你可以看到enable函数为菜单项提供了一个参数。如同,它不会禁用/启用整个菜单,只是某个项目。
更好的是,有一个EnableTop(size_t pos, bool enable)
功能可以禁用整个菜单,但不是整个菜单。
我是否必须单独禁用每个项目或菜单?做整个酒吧没有任何功能吗?
我做了一个手动执行此操作的功能,但必须有更好的方法吗?
def enableMenuBar(action): #true or false
for index in range(frame.menuBar.GetMenuCount()):
frame.menuBar.EnableTop(index, action)
由于
答案 0 :(得分:1)
您可以使用EnableTop()
停用整个菜单代码示例:
import wx
class gui(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, None, id, title, style=wx.DEFAULT_FRAME_STYLE)
menuBar = wx.MenuBar()
file = wx.Menu()
quit = wx.MenuItem(file, 101, '&Quit\tCtrl+Q', 'Quit the Application')
about = wx.MenuItem(file, 102, '&About\tCtrl+A', 'About the Application')
help = wx.MenuItem(file, 103, '&Help\tCtrl+H', 'Help related to the Application')
file.AppendItem(help)
file.AppendSeparator()
file.AppendItem(about)
file.AppendSeparator()
file.AppendItem(quit)
file.AppendSeparator()
menuBar.Append(file, '&File')
self.SetMenuBar(menuBar)
menuBar.EnableTop(0, False)#Comment out this to enable the menu
#self.SetMenuBar(None)#Uncomment this to hide the menu bar
if __name__ == '__main__':
app = wx.App()
frame = gui(parent=None, id=-1, title="My-App")
frame.Show()
app.MainLoop()
此外,如果您使用self.SetMenuBar(None)
,则整个菜单栏都会消失,如下所示。您可以使用这种快速而肮脏的方式切换菜单栏的显示/隐藏。要再次显示菜单栏,只需再次设置self.SetMenuBar(menuBar)
,菜单栏将再次显示。也可能有更好的方法。
我希望它有所帮助。