2016-04-04 134 views
1

我正在開發基於數據庫gtk3的程序。使用的操作系統是Linux Mint 17.3 64位和Win 7 64位。問題在Python 2.7下測試。我似乎無法控制關閉主窗口。如果有未保存的更改,我想阻止該窗口關閉。我用:Python GTK 3+控制關閉窗口

self.window.connect("delete-event", self.quit) 

「摧毀」事件似乎完全無法控制。從我所瞭解的「刪除事件」應該是一個請求,因此是可控的。 所以後來self.quit看起來是這樣的:

def quit(self, widget, something): 
    check_before_quit() 

所以後來check_before_quit()檢查是否有任何未保存的更改。張貼對話框和主窗口仍然存在。如果按下OK,代碼設置爲啓動Gtk.main_quit(),否則只是return。此時,無論按下「確定/取消」還是關閉對話框,無論如何都會關閉主窗口!同樣的事情發生在Win 7和Linux下。 我有一個綁定在Ctrl + Q退出。這似乎工作正常,問,並正確退出或停留在程序中。那麼按下關閉窗口按鈕是否會覆蓋某些內容?

回答

2

delete-event處理程序應返回TrueFalse,而不是退出本身。如果你不想關閉窗口,它應該返回True,如果你這樣做,它應該返回False。這聽起來有點倒退,所以我會用不同的方式說話:如果你想停止信號,它應該返回True,或者如果你不想做任何事情,它應該返回False

+0

這太容易了。非常感謝你 !!! –