pyqt5 QPainter加入到水平布局中,并根据预先设置的几个坐标点绘制图像,且图像随窗口变大变小,且变化过程不改变图像本身比例
时间: 2024-05-02 19:22:04 浏览: 10
以下是一个示例代码,可以将QPainter绘制的图像添加到水平布局中,并按比例缩放:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout
from PyQt5.QtGui import QPainter, QPixmap
from PyQt5.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('QPainter Example')
self.setGeometry(100, 100, 500, 500)
# 设置几个预先设置的坐标点
self.points = [(100, 100), (200, 200), (300, 150), (400, 250)]
# 创建一个水平布局
hbox = QHBoxLayout()
self.setLayout(hbox)
# 创建一个绘图区域,并将其添加到布局中
self.paintArea = QWidget(self)
hbox.addWidget(self.paintArea)
def paintEvent(self, event):
# 在绘图区域上绘制图像
pixmap = QPixmap(self.size())
pixmap.fill(Qt.white)
painter = QPainter(pixmap)
self.drawPoints(painter)
painter.end()
# 将绘制的图像显示在绘图区域上
self.paintArea.setPixmap(pixmap)
def drawPoints(self, painter):
# 根据预先设置的坐标点绘制图像
painter.setPen(Qt.red)
for point in self.points:
painter.drawEllipse(point[0], point[1], 10, 10)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())
```
在上述代码中,我们将绘图区域添加到水平布局中,并且在每次窗口大小变化时,重新绘制图像并按比例缩放。绘制的图像是在`drawPoints()`函数中根据预先设置的坐标点绘制的,可以根据具体需求进行修改。