Python 笔记本隐藏/禁用页面失败
我在wxpython有一个Python 笔记本隐藏/禁用页面失败,python,wxpython,Python,Wxpython,我在wxpython有一个笔记本: self.book = wx.Notebook(self, -1, style=0) self.book.AddPage(self.book_a,_("a")) self.book.AddPage(self.book_b,_("b")) 这段代码运行良好。一切都是它应该做的 问题是,如果x==1,我有一个条件:如果是真的,我需要隐藏/禁用book\u b页面(最好禁用) 我写了这段代码: if x==1: self.book_a.Hide() 但
笔记本
:
self.book = wx.Notebook(self, -1, style=0)
self.book.AddPage(self.book_a,_("a"))
self.book.AddPage(self.book_b,_("b"))
这段代码运行良好。一切都是它应该做的
问题是,如果x==1,我有一个条件:如果是真的,我需要隐藏/禁用book\u b
页面(最好禁用)
我写了这段代码:
if x==1:
self.book_a.Hide()
但是什么也没发生。然后我试着:
if x==1:
self.book_a.Disable()
但也没有发生什么
如果我这样做:
print self.book_a.Hide()
print self.book_a.Disable()
它回来了
False
False
我知道这意味着操作失败,这就是为什么当Hide()
或Disable()
返回False时,我看不到任何更改,但在google或其他地方找不到
有人知道问题出在哪里,或者在什么情况下
Hide()
或Disable()
返回false吗?wx.Notebook小部件不支持禁用页面。唯一的解决办法是检查正在单击哪个选项卡,如果该选项卡被“禁用”,则否决该事件(EVT_NOTEBOOK_PAGE_更改或EVT_NOTEBOOK_PAGE_更改)
不过,还有另一种选择。您可以使用FlatNotebook小部件或wx.lib.agw中的AUI笔记本(据我所知,wx.AUI的笔记本不支持此功能)。它们都支持禁用选项卡的功能。wxPython演示中有这两个小部件的示例
我这里也有这些控件的一些示例:
import wx
########################################################################
class TabPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
text = wx.TextCtrl(self)
########################################################################
class MainPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
notebook = wx.Notebook(self)
tab_one = TabPanel(notebook)
notebook.AddPage(tab_one, "Tab One")
tab_two = TabPanel(notebook)
tab_two.Disable()
notebook.AddPage(tab_two, "Tab Two")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(notebook, 1, wx.ALL|wx.EXPAND, 5)
self.SetSizer(sizer)
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Notebooks")
panel = MainPanel(self)
self.Show()
if __name__ == '__main__':
app = wx.App(False)
frame = MainFrame()
app.MainLoop()
如果不支持此操作,为什么可以从菜单中选择此功能?它有文档和所有东西。你指的是什么菜单?当我键入
self.book\u a.
时,菜单上有一些可靠的函数,它们的描述就在上面<代码>隐藏()和禁用()
都有。那么,如果这些选项不适用于笔记本电脑,为什么它会让我看到它们呢?正如我提到的,Disable
可以工作,但它只是禁用页面的小部件。这个小部件继承自窗口
,因此它确实有隐藏
,但我不确定它是否一定按照您希望的方式工作。