prog_linenum

2024年3月17日 星期日

【PySide6】視窗事件_視窗本身相關事件

 本文主要是了解視窗事件被觸發的相關時機。


先給一段程式碼:

  1. """
  2. 程式名稱:form_event.py
  3. 程式功能:
  4. 1. 視窗事件被觸發的相關時機
  5. """
  6. import sys
  7. from PySide6.QtGui import QFocusEvent
  8. from PySide6.QtWidgets import (
  9. QWidget, QApplication)
  10.  
  11. class MyApp(QWidget):
  12. def __init__(self):
  13. super().__init__()
  14. self.setWindowTitle('form_event.py')
  15. self.setGeometry(400, 250, 500, 300)
  16. self.show()
  17.  
  18. def changeEvent(self, event):
  19. print('changeEvent')
  20. def closeEvent(self, event):
  21. print('closeEvent')
  22.  
  23. def hideEvent(self, event):
  24. print('hideEvent')
  25. def moveEvent(self, event):
  26. print('moveEvent')
  27. def resizeEvent(self, event):
  28. print('resizeEvent')
  29. def showEvent(self, event):
  30. print('showEvent')
  31.  
  32. if __name__ == '__main__':
  33. app = QApplication()
  34. my_app = MyApp()
  35. sys.exit(app.exec())
  36.  

底下為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
  • 視窗啟動
  • 視窗縮小至工作列
  • 視窗被其它視窗蓋住/當其它視窗移開
  • 視窗重新顯示
  • 視窗調整大小時
  • 視窗關閉時
closeEvent
  • 視窗關閉
hideEvent
  • 視窗縮小至工作列
  • 視窗關閉
moveEvent
  • 視窗啟動
  • 視窗移動
paintEvent
  • 視窗啟動
  • 視窗被其它視窗蓋住/當其它視窗移開
  • 視窗重新顯示
  • 視窗調整大小
resizeEvent
  • 視窗啟動
  • 視窗被其它視窗蓋住/當其它視窗移開
  • 視窗調整大小
showEvent
  • 視窗啟動
  • 視窗重新顯示

有時一個操作動作當中,事件不只被觸發一次,如changeEvent在很多操作當中就被觸發多次。有些是連續觸發,如滑鼠移動視窗就會一直觸發moveEvent。

沒有留言:

張貼留言

【PySide6】視窗事件_視窗本身相關事件

 本文主要是了解視窗事件被觸發的相關時機。 先給一段程式碼: """ 程式名稱:form_event.py 程式功能: 1. 視窗事件被觸發的相關時機 """ import sys from PySide6.QtGu...