나는 사용자가 마지막 탭을 닫지 못하도록하고 싶었던 비슷한 상황이 있었다. 내가 한 일은 wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE
이벤트를 바인딩 한 다음 이벤트 처리기에서 열린 탭 수를 확인하는 것입니다. 탭 수가 2 개 미만인 경우 마지막 탭에 닫기 버튼이 없도록 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)