禁用wxMenuBar

时间:2014-04-19 01:41:54

标签: python wxpython

所以我想在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)

由于

1 个答案:

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

menu

此外,如果您使用self.SetMenuBar(None),则整个菜单栏都会消失,如下所示。您可以使用这种快速而肮脏的方式切换菜单栏的显示/隐藏。要再次显示菜单栏,只需再次设置self.SetMenuBar(menuBar),菜单栏将再次显示。也可能有更好的方法。

nomenu

我希望它有所帮助。