首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt6中对象的绘制观点

PyQt6中对象的绘制观点
EN

Stack Overflow用户
提问于 2022-11-23 15:26:36
回答 1查看 30关注 0票数 1

我对PyQt6很陌生。我想画一个物体在太空中移动,并在它周围画它的观点网站。这正是我想要的:

这就是我到现在为止得到的。

代码语言:javascript
复制
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.painter = QPainter(self)
        self.setWindowTitle("test 5")
        self.setStyleSheet("background-color:rgb(20, 20, 20);font-size:20px;")
        self.setGeometry(0, 0, 600, 600)

    def paintEvent(self, event):
        self.painter.begin(self)
        self.painter.setPen(QPen(QColor(30, 130, 30),  0, Qt.PenStyle.SolidLine))
        self.painter.setBrush(QBrush(QColor(0, 100, 0), Qt.BrushStyle.SolidPattern))
        self.painter.translate(300, 300)
        self.painter.rotate(-90)
        path = QPainterPath()
        path.moveTo(-20, 0)
        path.lineTo(-30, 15)
        path.lineTo(20, 0)
        path.lineTo(-30, -15)
        path.lineTo(-20, 0)
        self.painter.drawPath(path)
        self.painter.setPen(QPen(QColor(130, 30, 30),  0, Qt.PenStyle.SolidLine))
        self.painter.setBrush(QBrush(QColor(100, 0, 0, 100), Qt.BrushStyle.SolidPattern))
        path = QPainterPath()
        path.moveTo(100, 0)
        path.arcTo(-100, -100, 200, 200, -90 /2 * 16, 180 * 16)
        self.painter.drawPath(path)
        self.painter.end()

if __name__ == "__main__":
    App = QApplication(sys.argv)
    window = Window()
    window.show()
    try:
        sys.exit(App.exec())
    except SystemExit:
        print("closing window ...")

我想在物体周围画一个弧线,但它画了一个完整的圆圈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-23 20:00:42

您对QPainterPath使用了错误的角度,它使用了学位,而QPainter则使用了十六个学位。

另外,您需要使用arcMoveTo() (而不是moveTo),以便在启动新弧线时将路径放置在正确的位置。

最后,您必须使用closeSubpath()关闭路径。

代码语言:javascript
复制
        path = QPainterPath()
        outRect = QRectF(-100, -100, 200, 200)
        path.arcMoveTo(outRect, -60)
        path.arcTo(outRect, -60, 120)
        path.arcTo(-50, -50, 100, 100, 60, 240)
        path.closeSubpath()

        painter.drawPath(path)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74549261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档