Sau*_*igh 20 python tkinter pyqt pyqt4 pyside
有没有办法检测用户是否试图关闭窗口?例如,在Tkinter中我们可以这样做:
def exit_dialog():
#do stuff
pass
root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
谢谢.
Ole*_*pin 58
覆盖主窗口中的closeEvent
方法QWidget
.
例如:
class MainWindow(QWidget): # or QMainWindow
...
def closeEvent(self, event):
# do stuff
if can_exit:
event.accept() # let the window close
else:
event.ignore()
Run Code Online (Sandbox Code Playgroud)
另一种可能是使用这样QApplication
的aboutToQuit
信号:
app = QApplication(sys.argv)
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您只想检测一个窗口(即最后一个窗口),则可以使用setQuitOnLastWindowClosed
静态函数和lastWindowClosed
信号。
from PySide2 import QtGui
import sys
def keep_alive():
print("ah..ah..ah..ah...staying alive...staying alive")
window.setVisibility(QtGui.QWindow.Minimized)
if __name__ == '__main__':
app = QtGui.QGuiApplication()
app.setQuitOnLastWindowClosed(False)
app.lastWindowClosed.connect(keep_alive)
window = QtGui.QWindow()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
希望对某人有所帮助,它对我有用,因为在我第一次尝试时,我无法覆盖 closeEvent(),缺乏经验!
归档时间: |
|
查看次数: |
38412 次 |
最近记录: |