pyqt5 鼠标移到QLabel 图片放大
时间: 2023-08-11 08:39:29 浏览: 399
可以通过重载 QLabel 的 `enterEvent` 和 `leaveEvent` 事件来实现鼠标移到 QLabel 上时图片放大的功能。具体的实现步骤如下:
1. 创建一个 QLabel,并设置其显示的图片:
```python
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QLabel
label = QLabel()
pixmap = QPixmap("image.jpg")
label.setPixmap(pixmap)
```
2. 重载 QLabel 的 `enterEvent` 和 `leaveEvent` 事件:
```python
class MyLabel(QLabel):
def __init__(self, parent=None):
super().__init__(parent)
self.setMouseTracking(True)
self.setScaledContents(True) # 图片自适应大小
def enterEvent(self, event):
self.setGeometry(self.x() - 10, self.y() - 10, self.width() + 20, self.height() + 20)
super().enterEvent(event)
def leaveEvent(self, event):
self.setGeometry(self.x() + 10, self.y() + 10, self.width() - 20, self.height() - 20)
super().leaveEvent(event)
```
在 `enterEvent` 事件中,将 QLabel 的大小增加 20,并将其位置向左上方移动 10 个像素,从而实现了图片的放大。在 `leaveEvent` 事件中,将 QLabel 的大小减小 20,并将其位置向右下方移动 10 个像素,从而实现了图片的缩小。
最后,将 MyLabel 实例添加到主窗口中即可:
```python
from PyQt5.QtWidgets import QMainWindow, QApplication
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.label = MyLabel(self)
self.setCentralWidget(self.label)
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
```
这样就完成了鼠标移到 QLabel 上时图片放大的功能。
阅读全文