本文主要是了解视窗事件被触发的相关时机
程式码:form_event.py
"""程式名称:form_event.py程式功能:1. 视窗本身相关事件了解"""import sysfrom PySide6.QtGui import QFocusEventfrom PySide6.QtWidgets import ( QWidget, QApplication)class MyApp(QWidget): def __init__(self): super().__init__() self.setWindowTitle('form_event.py') self.setGeometry(400, 250, 500, 300) self.show() def changeEvent(self, event): print('changeEvent') def closeEvent(self, event): print('closeEvent') def hideEvent(self, event): print('hideEvent') def moveEvent(self, event): print('moveEvent') def resizeEvent(self, event): print('resizeEvent') def showEvent(self, event): print('showEvent')if __name__ == '__main__': app = QApplication() my_app = MyApp() sys.exit(app.exec())
底下为console输出讯息:
视窗启动时:
changeEvent
moveEvent
resizeEvent
showEvent
paintEvent
paintEvent
changeEvent
paintEvent
视窗缩小至工作列时:
changeEvent
hideEvent
changeEvent
视窗被其它视窗盖住/当其它视窗移开:
(此视窗要为作用中视窗,如果用滑鼠移动其它视窗去遮盖、移开,因动作视窗是在滑鼠所按住的视窗,故不会触发事件)
changeEvent
paintEvent
视窗重新显示时:
showEvent
changeEvent
changeEvent
paintEvent
视窗移动时:
一直触发moveEvent
视窗调整大小时:
changeEvent
paintEvent
resizeEvent
paintEvent ....
resizeEvent ....
当视窗关闭时:
changeEvent
closeEvent
changeEvent
hideEvent
事件被触发的时机
有时一个操作动作当中,事件不只被触发一次,如changeEvent在很多操作当中就被触发多次。有些是连续触发,如滑鼠移动视窗就会一直触发moveEvent。