当前位置:   article > 正文

PyQt5 与 PySide2 所有事件大集合,一段代码包括键盘、鼠标和窗口所有事件_pyside中globalpos()

pyside中globalpos()

PyQt5 与 PySide2 事件较多,网上文章多是描述其中一种或几种,我在学习的过程中进行了收集和扩展,为方便后来者快速学习,收集整理了绝大多数事件在一个文档中,您可以参考或修改使用。

代码中包括了键盘、鼠标以及窗口的绝大多数事件,并有传递的enevt参数详解。

共引入了以下事件方法:

changeEvent(self,event): 当控件的窗口状态的状态发生变化时调用
closeEvent(self,event): 关闭窗口时调用
eventFilter(self,w,e): 事件过滤器
hideEvent(self,event): 当控件隐藏时调用
keyPressEvent(self,QKeyEvent): 键盘某个键被按下时调用
mouseDoubieCiickEvent(self,event): 双击时调用
mouseMoveEvent(self,event): 鼠标移动时调用
mouseReleaseEvent(self,event): 键盘释放时调用
moveEvent(self,event): 窗口移动时调用该方法
paintEvent(self,event): 执行窗口重绘动作
resizeEvent(self,event): 调整窗口尺寸时调用该方法
showEvent(self,event): 当控件显示时调用
wheelEvent(self,event): 鼠标滚轮时调用
defchildEvent(self,a0:'QChildEvent'):
defdragEnterEvent(self,a0:QDragEnterEvent):
defdragLeaveEvent(self,a0:QDragLeaveEvent):
defdragMoveEvent(self,a0:QDragMoveEvent):
defdropEvent(self,a0:QDropEvent):
defenterEvent(self,a0:QEvent):
defevent(self,a0:QEvent):
defeventFilter(self,a0:'QObject',a1:'QEvent'):
deffocusInEvent(self,a0:QFocusEvent):
deffocusOutEvent(self,a0:QFocusEvent):
deftabletEvent(self,a0:QTabletEvent):
deftimerEvent(self,a0:'QTimerEvent'):
defleaveEvent(self,a0:QEvent):

注意事项:为保证系统资源不浪费,正常情况下 mouseMoveEvent 事件,只有按下鼠标时才会调用,如果需要连续调用,需要用以下代码:

self.setMouseTracking(True) # 只有设置此参数,鼠标移动才会实时连续响应

事件grabKeyboard 也需要先用以下代码激活才能正常响应:

self.grabKeyboard()         # 控件开始捕获键盘 只有控件开始捕获键盘,控件的键盘事件才能收到消息

我所用的事件,全部绑定在 QWidget上,如果需要绑定到其它控件上,需要进行更改...
费话不多说,上完整代码:

  1. import sys
  2. from PyQt5.QtCore import Qt,QEvent,QChildEvent,QTimerEvent,QObject
  3. from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton
  4. from PyQt5.QtGui import QMouseEvent,QWheelEvent,QPainter, QPixmap,QCursor,QDropEvent,QFocusEvent,QDragMoveEvent,QDragEnterEvent,QDragLeaveEvent,QTabletEvent,QCloseEvent,QShowEvent,QHideEvent,QMoveEvent,QResizeEvent,QPaintEvent
  5. # 把上边 PyQt5 替换成 PySide2 也可以正常运行!
  6. class QmyWidget(QWidget):
  7. def __init__(self, parent=None) -> None:
  8. super().__init__(parent)
  9. self.resize(400,400)
  10. self.setWindowTitle('事件委托')
  11. self.laba = QLabel(self)
  12. self.laba.setText('I am Label A')
  13. font = self.laba.font()
  14. font.setPointSize(10)
  15. font.setBold(True)
  16. self.laba.setFont(font)
  17. self.laba.setGeometry(20,20,300,60)
  18. self.laba.installEventFilter(self)
  19. self.labb = QLabel(self)
  20. self.labb.setText('I am Label B')
  21. font = self.labb.font()
  22. font.setPointSize(10)
  23. font.setBold(True)
  24. self.labb.setFont(font)
  25. self.labb.setGeometry(20,100,300,60)
  26. self.labb.installEventFilter(self)
  27. # self.installEventFilter(self)
  28. self.grabKeyboard() # 控件开始捕获键盘 只有控件开始捕获键盘,控件的键盘事件才能收到消息
  29. self.setMouseTracking(True) # 只有设置此参数,鼠标移动才会实时连续响应
  30. def eventFilter(self, a0: 'QObject', a1: 'QEvent') -> bool:
  31. print ('事件过滤',a0,a1)
  32. if a0 == self.laba:
  33. if a1.type()==QEvent.Enter:
  34. self.laba.setText('鼠标来啦')
  35. self.laba.setStyleSheet('background-color:rgb(170,255,255);')
  36. if a1.type()==QEvent.Leave:
  37. self.laba.setText('I am Label A')
  38. self.laba.setStyleSheet('')
  39. if a0 == self.labb:
  40. if a1.type()==QEvent.Enter:
  41. self.labb.setText('点我!')
  42. self.labb.setStyleSheet('background-color:rgb(85,255,127);')
  43. if a1.type()==QEvent.MouseButtonPress:
  44. self.labb.setText('还真点啊!')
  45. self.labb.setStyleSheet('background-color:rgb(85,255,127);')
  46. if a1.type()==QEvent.MouseButtonRelease:
  47. self.labb.setText('点我!')
  48. self.labb.setStyleSheet('background-color:rgb(85,255,127);')
  49. if a1.type()==QEvent.Leave:
  50. self.labb.setText('I am Label B')
  51. self.labb.setStyleSheet('')
  52. return super().eventFilter(a0, a1)
  53. def mouseMoveEvent(self, a0: QMouseEvent) -> None: #鼠标移动事件
  54. # 参考 https://blog.csdn.net/weixin_45553177/article/details/104513333
  55. print ('鼠标移动',a0)
  56. aa=f'''
  57. # {a0.x()}{a0.y()} # 返回相对于控件的鼠标坐标值;
  58. # {a0.pos()} # 返回相对于控件空间的QPoint对象;
  59. # {a0.localPos()} # 返回相对于控件空间的QPointF对象;
  60. # {a0.globalX()}{a0.globalY()} # 返回相对于屏幕的x,y 坐标值;
  61. # {a0.globalPos()} # 返回相对于屏幕的QPoint对象;
  62. # {a0.windowPos()} # 返回相对于窗口的QPointF对象;
  63. # {a0.screenPos()} # 返回相对于屏幕的QPointF对象;
  64. # {a0.buttons()} # 返回前面所列枚举值的组合,用于判断同时按下了哪些键。
  65. # # QtCore.Qt.NoButton - 0 - 没有按下鼠标键。例如移动鼠标时的button()返回值;
  66. # # QtCore.Qt.LeftButton -1 -按下鼠标左键;
  67. # # QtCore.Qt.RightButton -2 -按下鼠标右键;
  68. # # QtCore.Qt.Mion 或 QtCore.Qt.MiddleButton -4 -按下鼠标中键;
  69. # {a0.modifiers()} # 判断按下了哪些修饰键(Shift,Ctrl , Alt,等等),详见键盘事件(18)中的modifiers()。
  70. # {a0.timestamp()} # 返回事件发生的时间 毫秒;
  71. '''
  72. print (aa)
  73. return super().mouseMoveEvent(a0)
  74. def wheelEvent(self, a0: QWheelEvent) -> None:
  75. print ('鼠标滚轮',a0)
  76. aa=f'''
  77. {a0.angleDelta()} - 返回QPoint对象,为滚轮转过的数值,单位为1/8度。例如:
  78. angle=event.angleDelta( ) /8
  79. angleX=angle.x()
  80. angleY=angle.y()
  81. {a0.pixelDelta()} - 返回QPoint对象,为滚轮转过的像素值。
  82. {a0.x()}{a0.y()} - 返回相对于控件的当前鼠标的x,y位置;
  83. {a0.pos()} - 返回相对于控件的当前鼠标位置的QPoint对象;
  84. {a0.posF()} - 返回相对于控件的当前鼠标位置的QPoinFt对象;
  85. {a0.globalX()}{a0.globalY()} - 返回相对于屏幕的当前鼠标的x,y位置;
  86. {a0.globalPos()} - 返回相对于屏幕的当前鼠标QPoint位置;
  87. {a0.globalPosF()} - 返回相对于屏幕的当前鼠标QPointF位置;
  88. {a0.buttons()},{a0.modifiers()}{a0.timestamp()}的用法参见本文“1.按下、松开鼠标按键”中的相关内容。
  89. '''
  90. print(aa)
  91. angle=a0.angleDelta( ) /8
  92. angleX=angle.x()
  93. angleY=angle.y()
  94. print (angleX,angleY)
  95. return super().wheelEvent(a0)
  96. def mouseReleaseEvent(self, a0: QMouseEvent) -> None: #鼠标键松开时调用;
  97. print ('鼠标松开',a0)
  98. aa=f'''
  99. # {a0.x()}{a0.y()} # 返回相对于控件空间的鼠标坐标值;
  100. # {a0.pos()} # 返回相对于控件空间的QPoint对象;
  101. # {a0.localPos()} # 返回相对于控件空间的QPointF对象;
  102. # {a0.globalX()}{a0.globalY()} # 返回相对于屏幕的x,y 坐标值;
  103. # {a0.globalPos()} # 返回相对于屏幕的QPoint对象;
  104. # {a0.windowPos()} # 返回相对于窗口的QPointF对象;
  105. # {a0.screenPos()} # 返回相对于屏幕的QPointF对象;
  106. # {a0.buttons()} # 返回前面所列枚举值的组合,用于判断同时按下了哪些键。
  107. # # QtCore.Qt.NoButton - 0 - 没有按下鼠标键。例如移动鼠标时的button()返回值;
  108. # # QtCore.Qt.LeftButton -1 -按下鼠标左键;
  109. # # QtCore.Qt.RightButton -2 -按下鼠标右键;
  110. # # QtCore.Qt.Mion 或 QtCore.Qt.MiddleButton -4 -按下鼠标中键;
  111. # {a0.modifiers()} # 判断按下了哪些修饰键(Shift,Ctrl , Alt,等等),详见键盘事件(18)中的modifiers()。
  112. # {a0.timestamp()} # 返回事件发生的时间 毫秒;
  113. '''
  114. print (aa)
  115. # 参考 https://blog.csdn.net/richenyunqi/article/details/80554257
  116. # 左键按下
  117. if a0.button () == Qt.LeftButton:
  118. print("左")
  119. # 右键按下
  120. elif a0.button () == Qt.RightButton:
  121. print("右")
  122. # 中键按下
  123. elif a0.button () == Qt.MidButton:
  124. print("中")
  125. # 左右键同时按下 以下测试没起作用
  126. elif a0.button () == Qt.LeftButton | Qt.RightButton:
  127. print("左右")
  128. # 左中键同时按下
  129. elif a0.button () == Qt.LeftButton | Qt.MidButton:
  130. print("左中")
  131. # 右中键同时按下
  132. elif a0.button () == Qt.MidButton | Qt.RightButton:
  133. print("右中")
  134. # 左中右键同时按下
  135. elif a0.button () == Qt.LeftButton | Qt.MidButton | Qt.RightButton:
  136. print("左中右")
  137. print (a0.button (),Qt.LeftButton,Qt.MidButton,Qt.RightButton)
  138. return super().mouseReleaseEvent(a0)
  139. def mouseDoubleClickEvent(self, a0: QMouseEvent) -> None: # 双击鼠标时调用
  140. print ('鼠标双击',a0)
  141. aa=f'''
  142. # {a0.x()}{a0.y()} # 返回相对于控件空间的鼠标坐标值;
  143. # {a0.pos()} # 返回相对于控件空间的QPoint对象;
  144. # {a0.localPos()} # 返回相对于控件空间的QPointF对象;
  145. # {a0.globalX()}{a0.globalY()} # 返回相对于屏幕的x,y 坐标值;
  146. # {a0.globalPos()} # 返回相对于屏幕的QPoint对象;
  147. # {a0.windowPos()} # 返回相对于窗口的QPointF对象;
  148. # {a0.screenPos()} # 返回相对于屏幕的QPointF对象;
  149. # {a0.buttons()} # 返回前面所列枚举值的组合,用于判断同时按下了哪些键。
  150. # # QtCore.Qt.NoButton - 0 - 没有按下鼠标键。例如移动鼠标时的button()返回值;
  151. # # QtCore.Qt.LeftButton -1 -按下鼠标左键;
  152. # # QtCore.Qt.RightButton -2 -按下鼠标右键;
  153. # # QtCore.Qt.Mion 或 QtCore.Qt.MiddleButton -4 -按下鼠标中键;
  154. # {a0.modifiers()} # 判断按下了哪些修饰键(Shift,Ctrl , Alt,等等),详见键盘事件(18)中的modifiers()。
  155. # {a0.timestamp()} # 返回事件发生的时间 毫秒;
  156. '''
  157. print (aa)
  158. return super().mouseDoubleClickEvent(a0)
  159. def keyPressEvent(self, QKeyEvent) -> None: # 键盘某个键被按下时调用
  160. # keyPressEvent(QKeyEvent) 键盘按下时调用
  161. # keyReleaseEvent(QKeyEvent) 键盘释放时调用
  162. print('按下了键盘:',QKeyEvent.key(),'ctrl' if QKeyEvent.modifiers()==Qt.ControlModifier else '','shift' if QKeyEvent.modifiers()==Qt.ShiftModifier else '',\
  163. 'alt' if QKeyEvent.modifiers()==Qt.AltModifier else '' )
  164. #参数1 控件
  165. if QKeyEvent.key()== Qt.Key_A: #判断是否按下了A键
  166. #key() 是普通键
  167. print('按下了A键')
  168. if QKeyEvent.modifiers()==Qt.ControlModifier and QKeyEvent.key()== Qt.Key_A:#两键组合
  169. #modifiers() 判断修饰键
  170. #Qt.NoModifier 没有修饰键
  171. #Qt.ShiftModifier Shift键被按下
  172. #Qt.ControlModifier Ctrl键被按下
  173. #Qt.AltModifier Alt键被按下
  174. print('按下了Ctrl-A键')
  175. if QKeyEvent.modifiers() == Qt.ControlModifier|Qt.ShiftModifier and QKeyEvent.key() == Qt.Key_A: # 三键组合
  176. print('按下了Ctrl+Shift+A键')
  177. return super().keyPressEvent(QKeyEvent)
  178. '''所有窗口事件 参考 https://blog.csdn.net/weixin_39955953/article/details/110981759?utm_term=pyqt5%20%E7%AA%97%E5%8F%A3%E7%BC%A9%E6%94%BE%E4%BA%8B%E4%BB%B6&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-0-110981759-null-null&spm=3001.4430'''
  179. def changeEvent(self, a0: QEvent) -> None:
  180. print ('当控件的窗口状态的状态发生变化时调用',a0)
  181. return super().changeEvent(a0)
  182. def showEvent(self, a0: QShowEvent) -> None:
  183. print('当控件显示时调用。event参数包含QShowEvent类的实例。',a0)
  184. return super().showEvent(a0)
  185. def hideEvent(self, a0: QHideEvent) -> None:
  186. print('当控件隐藏时调用。event参数包含QHideEvent类的实例。',a0)
  187. return super().hideEvent(a0)
  188. def moveEvent(self, a0: QMoveEvent) -> None:
  189. print('窗口移动时,将持续调用该方法。',a0)
  190. print(f'{a0.pos()}:返回包括窗口当前坐标的QPoint类对象;{a0.oldPos()}:返回包括窗口移动前坐标的QPoint类对象。')
  191. return super().moveEvent(a0)
  192. def resizeEvent(self, a0: QResizeEvent) -> None:
  193. print('调整窗口尺寸时,将持续调用该方法。',a0)
  194. print(f'{a0.size()}:返回包括窗口当前尺寸的QSize类对象;{a0.oldSize()}:返回包括窗口调整前尺寸的QSize类对象')
  195. return super().resizeEvent(a0)
  196. def paintEvent(self, a0: QPaintEvent) -> None:
  197. print('执行重绘动作',a0)
  198. print(f'{a0.rect()}:返回包含需要重绘区域的QRect类的对象;{a0.region()}:返回包含需要重绘区域的QRegiont类的对象')
  199. return super().paintEvent(a0)
  200. def closeEvent(self, a0: QCloseEvent) -> None:
  201. print('关闭窗口时调用',a0)
  202. return super().closeEvent(a0)
  203. # 其它事件
  204. def leaveEvent(self, a0: QEvent) -> None:
  205. print('鼠标离开',a0)
  206. return super().leaveEvent(a0)
  207. def enterEvent(self, a0: QEvent) -> None:
  208. print('鼠标进入',a0)
  209. return super().enterEvent(a0)
  210. def event(self, a0: QEvent) -> bool:
  211. print('所有事件集合处,即所有事件均会先激活本方法',a0)
  212. return super().event(a0)
  213. def eventFilter(self, a0: 'QObject', a1: 'QEvent') -> bool:
  214. print('事件过滤器',a0,a1)
  215. return super().eventFilter(a0, a1)
  216. def childEvent(self, a0: 'QChildEvent') -> None:
  217. return super().childEvent(a0)
  218. def timerEvent(self, a0: 'QTimerEvent') -> None:
  219. print('时间控制器',a0)
  220. return super().timerEvent(a0)
  221. def focusInEvent(self, a0: QFocusEvent) -> None:
  222. print('部件或窗口获得焦点',a0)
  223. return super().focusInEvent(a0)
  224. def focusOutEvent(self, a0: QFocusEvent) -> None:
  225. print('部件或窗口失去焦点',a0)
  226. return super().focusOutEvent(a0)
  227. def dropEvent(self, a0: QDropEvent) -> None:
  228. print('drop拖拽控件时发生',a0)
  229. return super().dropEvent(a0)
  230. def dragMoveEvent(self, a0: QDragMoveEvent) -> None:
  231. print('drop拖拽控件移动时发生',a0)
  232. return super().dragMoveEvent(a0)
  233. def dragEnterEvent(self, a0: QDragEnterEvent) -> None:
  234. print('drop拖拽控件进入时发生',a0)
  235. return super().dragEnterEvent(a0)
  236. def dragLeaveEvent(self, a0: QDragLeaveEvent) -> None:
  237. print('drop拖拽控件离开时发生',a0)
  238. return super().dragLeaveEvent(a0)
  239. def tabletEvent(self, a0: QTabletEvent) -> None:
  240. print('QTabletEvent事件',a0)
  241. return super().tabletEvent(a0)
  242. if __name__=='__main__':
  243. app = QApplication(sys.argv)
  244. form = QmyWidget()
  245. form.show()
  246. sys.exit(app.exec_())

运行结果(一部分):

  1. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtGui.QMouseEvent object at 0x000002CE9BAFBBE0>
  2. 鼠标移动 <PyQt5.QtGui.QMouseEvent object at 0x000002CE9BAFBBE0>
  3. # 3940 # 返回相对于控件空间的鼠标坐标值;
  4. # PyQt5.QtCore.QPoint(394, 0) # 返回相对于控件空间的QPoint对象;
  5. # PyQt5.QtCore.QPointF(394.0, 0.0) # 返回相对于控件空间的QPointF对象;
  6. # 1154320 # 返回相对于屏幕的x,y 坐标值;
  7. # PyQt5.QtCore.QPoint(1154, 320) # 返回相对于屏幕的QPoint对象;
  8. # PyQt5.QtCore.QPointF(394.0, 0.0) # 返回相对于窗口的QPointF对象;
  9. # PyQt5.QtCore.QPointF(1154.0, 320.0) # 返回相对于屏幕的QPointF对象;
  10. # <PyQt5.QtCore.Qt.MouseButtons object at 0x000002CE9BAE7ED0> # 返回前面所列枚举值的组合,用于判断同时按下了哪些键。
  11. # # QtCore.Qt.NoButton - 0 - 没有按下鼠标键。例如移动鼠标时的button()返回值;
  12. # # QtCore.Qt.LeftButton -1 -按下鼠标左键;
  13. # # QtCore.Qt.RightButton -2 -按下鼠标右键;
  14. # # QtCore.Qt.Mion 或 QtCore.Qt.MiddleButton -4 -按下鼠标中键;
  15. # <PyQt5.QtCore.Qt.KeyboardModifiers object at 0x000002CE9BAE7ED0> # 判断按下了哪些修饰键(Shift,Ctrl , Alt,等等),详见键盘事件(18)中的modifiers()。
  16. # 14960 # 返回事件发生的时间 毫秒;
  17. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  18. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  19. 鼠标离开 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  20. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  21. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  22. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  23. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  24. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  25. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  26. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  27. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  28. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  29. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtGui.QCloseEvent object at 0x000002CE9BAFBBE0>
  30. 关闭窗口时调用 <PyQt5.QtGui.QCloseEvent object at 0x000002CE9BAFBBE0>
  31. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  32. 事件过滤器 <PyQt5.QtWidgets.QLabel object at 0x000002CE9BAFBAC0> <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  33. 事件过滤器 <PyQt5.QtWidgets.QLabel object at 0x000002CE9BAFBB50> <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  34. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  35. 当控件的窗口状态的状态发生变化时调用 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  36. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtGui.QHideEvent object at 0x000002CE9BAFBBE0>
  37. 当控件隐藏时调用。event参数包含QHideEvent类的实例。 <PyQt5.QtGui.QHideEvent object at 0x000002CE9BAFBBE0>
  38. 事件过滤器 <PyQt5.QtWidgets.QLabel object at 0x000002CE9BAFBAC0> <PyQt5.QtGui.QHideEvent object at 0x000002CE9BAFBBE0>
  39. 事件过滤器 <PyQt5.QtWidgets.QLabel object at 0x000002CE9BAFBB50> <PyQt5.QtGui.QHideEvent object at 0x000002CE9BAFBBE0>
  40. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  41. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>
  42. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtGui.QPlatformSurfaceEvent object at 0x000002CE9BAFBBE0>
  43. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBC70>
  44. 所有事件集合处,即所有事件均会先激活本方法 <PyQt5.QtCore.QEvent object at 0x000002CE9BAFBBE0>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/838867
推荐阅读
相关标签
  

闽ICP备14008679号