14
有沒有辦法檢測用戶是否嘗試關閉窗口? 例如,在Tkinter的,我們可以做這樣的事情:PySide/PyQt檢測用戶是否嘗試關閉窗口
def exit_dialog():
#do stuff
pass
root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()
感謝。
有沒有辦法檢測用戶是否嘗試關閉窗口? 例如,在Tkinter的,我們可以做這樣的事情:PySide/PyQt檢測用戶是否嘗試關閉窗口
def exit_dialog():
#do stuff
pass
root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()
感謝。
覆蓋您主窗口中QWidget
的closeEvent
方法。
例如:
class MainWindow(QWidget): # or QMainWindow
...
def closeEvent(self, event):
# do stuff
if can_exit:
event.accept() # let the window close
else:
event.ignore()
另一種可能性是使用QApplication
的aboutToQuit
信號是這樣的:
app = QApplication(sys.argv)
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable
注意,這將不會在主線程工作繁忙計算。應該將計算移到另一個線程才能關閉窗口。 – d33tah 2013-02-26 22:52:06
請注意,在QMainWindow中,沒有屬性'canExit' – Tcll 2015-05-06 15:43:59
@Tll,在Qt庫中沒有任何屬性(據我所知,但絕對不在QWidget或QMainWindow中)。 重點是:將其定義爲自定義處理程序。 – 2016-01-07 21:27:19