python - 在 PyQt 中绘制多边形

标签 python python-3.x pyqt pyqt5

背景

我想在屏幕上画一个简单的形状,我选择了 PyQt 作为要使用的包,因为它似乎是最成熟的。我没有以任何方式锁定它。

问题

在屏幕上绘制一个简单的形状(例如多边形)似乎过于复杂。我发现的所有示例都试图做很多额外的事情,但我不确定真正相关的是什么。

问题

在 PyQt 中在屏幕上绘制多边形的绝对最小方法是什么?

如果有任何区别,我会使用 PyQt 版本 5 和 Python 版本 3。

最佳答案

不知道你说的是什么

on the screen

您可以使用 QPainter,在 QPaintDevice 的任何子类上绘制大量形状,例如QWidget 和所有子类。

最低限度是为线条和文本设置笔,为填充设置画笔。然后创建一个多边形,设置多边形的所有点并在paintEvent()中绘制:

import sys, math
from PyQt5 import QtCore, QtGui, QtWidgets

class MyWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.pen = QtGui.QPen(QtGui.QColor(0,0,0))                      # set lineColor
        self.pen.setWidth(3)                                            # set lineWidth
        self.brush = QtGui.QBrush(QtGui.QColor(255,255,255,255))        # set fillColor  
        self.polygon = self.createPoly(8,150,0)                         # polygon with n points, radius, angle of the first point

    def createPoly(self, n, r, s):
        polygon = QtGui.QPolygonF() 
        w = 360/n                                                       # angle per step
        for i in range(n):                                              # add the points of polygon
            t = w*i + s
            x = r*math.cos(math.radians(t))
            y = r*math.sin(math.radians(t))
            polygon.append(QtCore.QPointF(self.width()/2 +x, self.height()/2 + y))  

        return polygon

    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.setPen(self.pen)
        painter.setBrush(self.brush)  
        painter.drawPolygon(self.polygon)

app = QtWidgets.QApplication(sys.argv) 

widget = MyWidget()
widget.show()

sys.exit(app.exec_())

关于python - 在 PyQt 中绘制多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316781/

相关文章:

python - 为项目选择合适的 GUI 框架

python - 我如何用pafy为进度条制作线程

python - 如何将参数传递给 AutoMLConfig 中的 get_data 脚本

python - Models.py 问题( key )

python - 使用 cv2 时删除 [h264 @ xxx] 错误控制台输出

python - Pandas Groupby 应用函数来计算大于零的值

python - 无法在单个连接中发送多个请求数据 — 套接字错误

标签栏顶部的 Qt 样式表奇怪的线条

python - 错误 : 'float' object does not support item assignment

Python CExtension 给出 ModuleNotFoundError