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

这就是我到现在为止得到的。
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 ...")我想在物体周围画一个弧线,但它画了一个完整的圆圈。
发布于 2022-11-23 20:00:42
您对QPainterPath使用了错误的角度,它使用了学位,而QPainter则使用了十六个学位。
另外,您需要使用arcMoveTo() (而不是moveTo),以便在启动新弧线时将路径放置在正确的位置。
最后,您必须使用closeSubpath()关闭路径。
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)https://stackoverflow.com/questions/74549261
复制相似问题