当前位置:   article > 正文

PyQt5 鼠标点击事件(点击响应事件可自定义):鼠标单击、双击、滚轮滚动、释放、移动等_pyqt5 tabelewidget 鼠标点击时间

pyqt5 tabelewidget 鼠标点击时间

自己写通了最常用的鼠标事件,具体响应事件,大家可以自定义,实现的效果如下:

                         

具体代码如下,有任何问题,欢迎小伙伴们交流讨论。

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Apr 26 20:49:32 2019
  4. @author: Tiny
  5. """
  6. # =============================================================================
  7. ''' 鼠标事件,各动作响应事件可以随意自定义'''
  8. ''' 参考: 1. https://blog.csdn.net/richenyunqi/article/details/80554257
  9. pyqt判断鼠标点击事件——左键按下、中键按下、右键按下、左右键同时按下等等;
  10. 2. https://fennbk.com/8065
  11. Pyqt5 之 鼠标 (事件与方法介绍)
  12. 3. https://blog.csdn.net/leemboy/article/details/80462632
  13. PyQt5编程-鼠标事件
  14. 4. https://doc.qt.io/qtforpython/PySide2/QtGui/QWheelEvent.html#PySide2.QtGui.PySide2.QtGui.QWheelEvent.delta
  15. QWheelEvent'''
  16. # =============================================================================
  17. # =============================================================================
  18. ''' PyQt4 和 PyQt5区别:'''
  19. # PySide2.QtGui.QWheelEvent.delta()
  20. # Return type: int
  21. # This function has been deprecated, use pixelDelta() or angleDelta() instead.
  22. # =============================================================================
  23. from PyQt5 import QtCore, QtGui, QtWidgets
  24. from PyQt5.QtGui import *
  25. from PyQt5.QtCore import *
  26. import sys
  27. '''自定义的QLabel类'''
  28. class myImgLabel(QtWidgets.QLabel):
  29. def __init__(self, parent=None):
  30. super(myImgLabel, self).__init__(parent)
  31. f = QFont("ZYSong18030",10) # 设置字体,字号
  32. self.setFont(f) # 未来自定义事件后,该两句删掉或注释掉
  33. '''重载一下鼠标按下事件(单击)'''
  34. def mousePressEvent(self, event):
  35. if event.buttons () == QtCore.Qt.LeftButton: # 左键按下
  36. self.setText ("单击鼠标左键的事件: 自己定义")
  37. print("单击鼠标左键") # 响应测试语句
  38. elif event.buttons () == QtCore.Qt.RightButton: # 右键按下
  39. self.setText ("单击鼠标右键的事件: 自己定义")
  40. print("单击鼠标右键") # 响应测试语句
  41. elif event.buttons () == QtCore.Qt.MidButton: # 中键按下
  42. self.setText ("单击鼠标中键的事件: 自己定义")
  43. print("单击鼠标中键") # 响应测试语句
  44. elif event.buttons () == QtCore.Qt.LeftButton | QtCore.Qt.RightButton: # 左右键同时按下
  45. self.setText ("同时单击鼠标左右键的事件: 自己定义")
  46. print("单击鼠标左右键") # 响应测试语句
  47. elif event.buttons () == QtCore.Qt.LeftButton | QtCore.Qt.MidButton: # 左中键同时按下
  48. self.setText ("同时单击鼠标左中键的事件: 自己定义")
  49. print("单击鼠标左中键") # 响应测试语句
  50. elif event.buttons () == QtCore.Qt.MidButton | QtCore.Qt.RightButton: # 右中键同时按下
  51. self.setText ("同时单击鼠标右中键的事件: 自己定义")
  52. print("单击鼠标右中键") # 响应测试语句
  53. elif event.buttons () == QtCore.Qt.LeftButton | QtCore.Qt.MidButton \
  54. | QtCore.Qt.RightButton: # 左中右键同时按下
  55. self.setText ("同时单击鼠标左中右键的事件: 自己定义")
  56. print("单击鼠标左中右键") # 响应测试语句
  57. '''重载一下滚轮滚动事件'''
  58. def wheelEvent(self, event):
  59. # if event.delta() > 0: # 滚轮上滚,PyQt4
  60. # This function has been deprecated, use pixelDelta() or angleDelta() instead.
  61. angle=event.angleDelta() / 8 # 返回QPoint对象,为滚轮转过的数值,单位为1/8度
  62. angleX=angle.x() # 水平滚过的距离(此处用不上)
  63. angleY=angle.y() # 竖直滚过的距离
  64. if angleY > 0:
  65. self.setText("滚轮向上滚动的事件: 自己定义")
  66. print("鼠标滚轮上滚") # 响应测试语句
  67. else: # 滚轮下滚
  68. self.setText("滚轮向下滚动的事件: 自己定义")
  69. print("鼠标滚轮下滚") # 响应测试语句
  70. '''重载一下鼠标双击事件'''
  71. def mouseDoubieCiickEvent(self, event):
  72. # if event.buttons () == QtCore.Qt.LeftButton: # 左键按下
  73. # self.setText ("双击鼠标左键的功能: 自己定义")
  74. self.setText ("鼠标双击事件: 自己定义")
  75. '''重载一下鼠标键释放事件'''
  76. def mouseReleaseEvent(self, event):
  77. self.setText("鼠标释放事件: 自己定义")
  78. print("鼠标释放") # 响应测试语句
  79. '''重载一下鼠标移动事件'''
  80. def mouseMoveEvent(self, event):
  81. self.setText("鼠标移动事件: 自己定义")
  82. print("鼠标移动") # 响应测试语句
  83. # '''重载一下鼠标进入控件事件'''
  84. # def enterEvent(self, event):
  85. #
  86. #
  87. # '''重载一下鼠标离开控件事件'''
  88. # def leaveEvent(self, event):
  89. #
  90. '''定义主窗口'''
  91. class MyWindow(QtWidgets.QWidget):
  92. def __init__(self):
  93. super(MyWindow, self).__init__()
  94. self.imgLabel = myImgLabel() # 声明imgLabel
  95. self.image = QImage() # 声明新img
  96. if self.image.load("image/cc2.png"): # 如果载入图片,则
  97. self.imgLabel.setPixmap(QPixmap.fromImage(self.image)) # 显示图片
  98. self.gridLayout = QtWidgets.QGridLayout (self) # 布局设置
  99. self.gridLayout.addWidget (self.imgLabel, 0, 0, 1, 1) #注释掉这两句,则不显示图片
  100. '''主函数'''
  101. if __name__ == "__main__":
  102. app = QtWidgets.QApplication(sys.argv)
  103. myshow = MyWindow()
  104. myshow.show()
  105. sys.exit (app.exec_())

用到的图片如下:

                                                                               

 

参考链接如下:

        pyqt判断鼠标点击事件——左键按下、中键按下、右键按下、左右键同时按下等等

        Pyqt5 之 鼠标 (事件与方法介绍

        PyQt5编程-鼠标事件

        QWheelEvent

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

闽ICP备14008679号