pyqt图片自适应窗体
时间: 2023-09-24 16:06:17 浏览: 164
可以通过在PyQt中使用QLabel和QPixmap来实现图片自适应窗体的效果。具体步骤如下:
1. 创建一个QLabel控件,用于显示图片。
```python
label = QLabel(self)
```
2. 加载图片并设置到QLabel控件中。
```python
pixmap = QPixmap('image.jpg')
label.setPixmap(pixmap)
```
3. 获取窗口大小并按比例缩放图片。
```python
# 获取窗口大小
width = label.width()
height = label.height()
# 缩放图片
pixmap = pixmap.scaled(width, height, Qt.KeepAspectRatio, Qt.SmoothTransformation)
label.setPixmap(pixmap)
```
4. 在窗口大小改变时重新缩放图片。
```python
def resizeEvent(self, event):
# 获取窗口大小
width = label.width()
height = label.height()
# 缩放图片
pixmap = pixmap.scaled(width, height, Qt.KeepAspectRatio, Qt.SmoothTransformation)
label.setPixmap(pixmap)
```
完整代码如下:
```python
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个QLabel控件,用于显示图片
label = QLabel(self)
label.setAlignment(Qt.AlignCenter)
# 加载图片并设置到QLabel控件中
pixmap = QPixmap('image.jpg')
label.setPixmap(pixmap)
# 获取窗口大小并按比例缩放图片
width = label.width()
height = label.height()
pixmap = pixmap.scaled(width, height, Qt.KeepAspectRatio, Qt.SmoothTransformation)
label.setPixmap(pixmap)
def resizeEvent(self, event):
# 获取窗口大小
label = self.findChild(QLabel)
width = label.width()
height = label.height()
# 缩放图片
pixmap = QPixmap('image.jpg')
pixmap = pixmap.scaled(width, height, Qt.KeepAspectRatio, Qt.SmoothTransformation)
label.setPixmap(pixmap)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
阅读全文