У меня была аналогичная ситуация, когда я хотел запретить пользователю закрывать последнюю вкладку. То, что я сделал, было связано с событием wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE
, а затем в обработчике события проверялось количество открываемых вкладок. Если количество вкладок меньше двух, я переключаю стиль wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB
так, чтобы на последней вкладке не была кнопка закрытия.
class MyAuiNotebook(wx.aui.AuiNotebook):
def __init__(self, *args, **kwargs):
kwargs['style'] = kwargs.get('style', wx.aui.AUI_NB_DEFAULT_STYLE) & \
~wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB
super(MyAuiNotebook, self).__init__(*args, **kwargs)
self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.onClosePage)
def onClosePage(self, event):
event.Skip()
if self.GetPageCount() <= 2:
# Prevent last tab from being closed
self.ToggleWindowStyle(wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB)
def AddPage(self, *args, **kwargs):
super(MyAuiNotebook, self).AddPage(*args, **kwargs)
# Allow closing tabs when we have more than one tab:
if self.GetPageCount() > 1:
self.SetWindowStyle(self.GetWindowStyleFlag() | \
wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB)