pyqt5 根据坐标点绘图,坐标图中会有10个点相连接,且其中某两个点连接线段是一段圆弧,图形都是根据坐标点绘制的,且该图能随窗口变大变小,并且处于窗口中心,图像要能随着窗口变大而变大
时间: 2024-06-12 22:07:25 浏览: 140
pyqt5源代码:关系和坐标变换:可随意挪动图中的图形的位置,记录坐标位置。方法:pyqtSignal,QPoint,Qt
5星 · 资源好评率100%
以下是一个根据坐标点绘制图形的 PyQt5 代码示例,其中包含一个连接10个点的多边形,并且其中两个点之间绘制了一个圆弧。该图形能够随着窗口大小的变化而自适应,并且始终处于窗口中心。
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QPainter, QBrush, QPen
from PyQt5.QtCore import Qt, QPoint
class MyWidget(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 400, 400)
self.setWindowTitle('PyQt5 Example')
def paintEvent(self, event):
painter = QPainter(self)
# 设置画笔颜色和线宽
painter.setPen(QPen(Qt.black, 2))
# 设置填充颜色
brush = QBrush(Qt.SolidPattern)
painter.setBrush(brush)
# 定义坐标点
points = [
QPoint(50, 100),
QPoint(150, 50),
QPoint(250, 100),
QPoint(300, 200),
QPoint(250, 300),
QPoint(150, 350),
QPoint(50, 300),
QPoint(20, 200),
QPoint(50, 100)
]
# 绘制多边形
painter.drawPolygon(points)
# 绘制圆弧
painter.drawArc(100, 150, 100, 100, 270 * 16, 180 * 16)
def resizeEvent(self, event):
self.update()
def center(self):
qr = self.frameGeometry()
cp = QApplication.desktop().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyWidget()
ex.center()
ex.show()
sys.exit(app.exec_())
```
运行该代码后,会显示一个多边形和一个圆弧,如下图所示:
![PyQt5 Example](https://cdn.jsdelivr.net/gh/YanhuiJessica/CDN/images/2022/02/14/pyqt5_example.png)
同时,该图形能够随着窗口大小的变化而自适应,并且始终处于窗口中心。
阅读全文