pyqt5用鼠标滚轮上下平移一个QLabel
时间: 2024-03-21 21:38:41 浏览: 19
可以通过重写`QLabel`的`wheelEvent`方法来实现鼠标滚轮上下平移。具体实现如下:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QLabel
class MyLabel(QLabel):
def __init__(self, parent=None):
super().__init__(parent)
self.setMouseTracking(True)
self.last_y = None
def wheelEvent(self, event):
if event.orientation() == Qt.Vertical:
if self.last_y:
diff = event.y() - self.last_y
self.scroll(diff)
self.last_y = event.y()
event.accept()
def scroll(self, diff):
scroll_y = self.verticalScrollBar().value()
self.verticalScrollBar().setValue(scroll_y - diff)
```
在这个`MyLabel`类中,我们重写了`wheelEvent`方法,当鼠标滚轮滚动时,如果是垂直方向的滚动,就计算出滚动的距离,然后调用`scroll`方法来实现平移。
`scroll`方法中,我们获取当前`QLabel`的垂直滚动条的值,然后根据滚动的距离来设置新的滚动条值,从而实现平移。
最后,我们需要在程序中创建一个`MyLabel`对象,并把它添加到主窗口中。
```python
if __name__ == '__main__':
app = QApplication([])
label = MyLabel('Hello PyQt5')
label.setFixedSize(200, 100)
label.setAlignment(Qt.AlignCenter)
label.setWordWrap(True)
label.show()
app.exec_()
```
这样,我们就可以通过鼠标滚轮来上下平移这个`QLabel`了。