2009-06-28 93 views
2

我正在使用wxpython的osx應用程序。當用戶單擊窗口關閉按鈕時,我想將窗口最小化爲停靠欄,以便可以從停靠欄中恢復窗口。我怎樣才能做到這一點?目前我有問題恢復窗口,因爲當用戶點擊關閉按鈕時會被破壞。我怎樣才能防止呢?提前如何使用wxpython禁用OSX中的窗口關閉按鈕?

回答

0

你就不能綁定事件EVT_CLOSE,並儘量減少使用,而不是你的處理器收盤爲EVT_ICONIZE

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

方式

感謝我做到這一點是這樣的:

__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-ish hide。您需要意識到應用程序仍在運行,並且可以調用其菜單,因爲菜單欄仍然在屏幕的頂部。在菜單事件處理程序中對self.Show()的戰略調用是您的朋友。

當你的應用程序窗口被隱藏時(例如點擊dock來重新顯示窗口),你也可以很好地利用wx.TaskBarIcon與dock進行良好的交互。

相關問題