2011-07-09 75 views
0

我有一個在Windows和Linux上運行的pygtk應用程序。主GUI具有關閉對從刪除事件(當用戶點擊窗口上的X按鈕)被調用的函數或從經由FILE-菜單> QUITpygtk應用程序不會通過win32上的刪除事件退出

的代碼看起來是這樣

def close_down(self): 
    self.hide_gui() 
    #do some cleanup stuff here, close down a log file etc... 
    gtk.main_quit() 

def on_close_down_activate(self, widget): # From menu 
    self.close_down() 
    print("Closed") 

def on_main_gui_delete_event(self, window, event): # From window X button 
    self.close_down() 
    print("Closed") 

但是,當用戶單擊窗口上的X按鈕時,「閉合」一詞將打印到cmd行,但應用程序會掛起,並且永遠不會返回控制cmd行,除非我通過任務管理器殺死python。如果用戶從文件菜單中選擇退出,應用程序將打印單詞「關閉」並將控制返回到cmd行。

在Linux上,它按預期行事。在窗戶上保持一些事情GTK?

回答

1

要關閉PyGTK中的應用程序,實際上需要兩行代碼,而不僅僅是一行代碼。我的猜測是,在Linux中,窗口正在關閉,但該過程不是。在Windows中,什麼都沒有關閉。

爲了解決這個問題,只需添加下面的下面一行「gtk.main_quit()」

return False 

這樣做的原因代碼是,在PyGTK的,你可以利用這條線創建「你確定你想戒菸?「對話框。如果該行讀取「返回True」,程序根本不會關閉。