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