2009-06-28 10 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])を呼び出すことを確認する必要があります。ウィンドウが閉じられたときに

これはあなたに素敵なマックっぽい非表示を提供します。あなたはアプリがまだ走っていると、メニューバーが画面の上部にまだあるように、そのメニューを呼び出すことができることに注意する必要があります。メニューイベントハンドラ内self.Show()への戦略的な呼び出しは、ここにあなたの友人です。

アプリのウィンドウが隠されているときにも(例えば、ウィンドウを再表示するためにドックをクリックしてください)ドックとうまく対話するwx.TaskBarIconを有効に利用することができます。

関連する問題