2009-06-28 6 views
2

나는 wxpython을 사용하여 osx 용 응용 프로그램을 만들고 있습니다. 사용자가 창 닫기 단추를 클릭 할 때 창을 도크 바에서 최소화 할 수 있도록 창을 최소화하려고합니다. 내가 어떻게 할 수 있니? 현재 사용자가 닫기 버튼을 클릭 할 때 파괴되기 때문에 현재 창을 복원하는 데 문제가 있습니다. 내가 어떻게 막을 수 있니?wxpython을 사용하여 OSX에서 윈도우 닫기 버튼을 비활성화하는 방법은 무엇입니까?

답변

0

방금 ​​EVT_ICONIZE

... 
def __init__(self): 
    ... 
    self.Bind(wx.EVT_CLOSE, self.onCloseWindow) 
    ... 
def onCloseWindow(self, event): 
    ... do something else instead of closing ... 
... 
5

대한 핸들러를 사용하여 닫는 대신하는 방법을 이벤트 EVT_CLOSE을 결합하고 최소화 할 수 없습니다 사전에

덕분에 나는 할 수는 다음과 같이이다 :

__init__ 메서드에서 wx.EVT_CLOSE 이벤트에 대한 처리기와 "실제"종료 옵션 인 메뉴 항목을 설정합니다. 너는 너를 필요로하거나 너의 프로그램을 결코 닫을 수 없다.

def OnClose(self,evt): 
    #Turn closes into hides unless this is a quit application message/or OS shutting down 
    if evt.CanVeto(): 
    self.Hide() 
    evt.Veto() 
    else: 
     #if we don't veto it we allow the event to propogate 
     evt.Skip() 

def OnMenuExit(self,evt): 
    #Event handler for exit menu item 
    self.Close(force=True) #Stops the close handler vetoing it 

또한 __init__에 당신이 올바른 메뉴 처리기에 독 상황에 맞는 메뉴 노선에 항목을 종료하는 것이 너무 wx.App.SetMacExitMenuItemId([ID OF YOUR EXIT MENU ITEM HERE]) 전화 있는지 확인해야합니다.

이렇게하면 창을 닫을 때 멋진 Mac-hide 표시가됩니다. 앱이 여전히 실행 중이며 메뉴 막대가 여전히 화면 상단에있는 것처럼 메뉴를 호출 할 수 있다는 점을 알아야합니다. 메뉴 이벤트 핸들러의 self.Show()에 대한 전략적 호출은 친구입니다.

또한 앱 창이 숨겨져있을 때 wx.TaskBarIcon을 사용하여 도크와 잘 상호 작용할 수 있습니다 (예 : 다시보기 창에 도크 클릭).

관련 문제