在 PyQt 中绘制多边形

2023-11-23

背景

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

Problem

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

Question

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

如果有什么区别的话,我使用 PyQt 版本 5 和 Python 版本 3。


我不确定你的意思

屏幕上

您可以使用 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_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PyQt 中绘制多边形 的相关文章

随机推荐

  • 如何使用 javascript 将 json 从服务器“流”到客户端

    我对 Ajax 和 JSON 非常熟悉 可以发送请求并解析 JSON 请求 理想情况下 我希望收到多个响应以定期更新进度栏 这样客户就可以获得积极的反馈 我听说过 JSON 流 但还没有找到关于如何实现它的好资源 有谁知道一个好的资源或如何
  • Keras 中基于输入数据的自定义损失函数

    我正在尝试使用 Keras 创建自定义损失函数 我想根据输入计算损失函数并预测神经网络的输出 我尝试使用 Keras 中的 customloss 函数 我认为 y true 是我们为训练给出的输出 y pred 是神经网络的预测输出 下面的
  • 在 Capistrano 3 中永久切换用户(单独授权和部署)

    我们在服务器管理中有以下模式 所有用户都有自己的用户 但部署完全由特殊的部署用户执行 无法直接登录 我们在 Capistrano 2 x 中使用了这个方法 default run options shell sudo u deploy ba
  • 使用Unity将对象注入到IValueConverter实例中

    我在 Silverlight 5 项目中有一个 IValueConverter 实例 它将自定义数据转换为不同的颜色 我需要从数据库中读取实际的颜色值 因为这些值可以由用户编辑 由于 Silverlight 使用异步调用通过实体框架从数据库
  • 如何使元素水平和垂直居中

    我试图将选项卡内容垂直居中 但是当我添加 CSS 样式时display inline flex 水平文本对齐消失 如何为每个选项卡同时进行 x 和 y 文本对齐 box sizing border box leftFrame backgro
  • Flutter 中已弃用“canLaunch”

    我用过网址启动器包裹 String query Uri encodeComponent Utils getSelectedStoreAddress var appleUrl maps q query var googleUrl https
  • Primefaces p:fileUpload 在 IE 10 中不起作用

    p fileUpload 中的更新属性和 onComplete 在 IE10 中不起作用 在 IE 9 中 sizeLimit 属性被忽略 有谁遇到过这种情况吗 我尝试通过在 p fileUoload 上使用 onComplete 属性来调
  • 如何在Python中查找两个日期之间的星期一或任何其他工作日的数量?

    我有两个日期 我需要找出有多少个周一至周五到来 除周六 周日 每天都应该计算在内 目前我在想 import calendar import datetime start date datetime datetime strptime 01
  • 如何在带有 Entity Framework Core 1.0 (EF7) 的脚手架 DbContext 中使用数据库视图

    很遗憾实体框架核心 1 0 以前称为实体框架 7 尚不支持视图 我正在尝试使用表来 伪造 它 然而脚手架dotnet dbcontext ef scaffold命令当前无法识别或生成视图 我想要一个允许查询视图和更新表的 DbContext
  • 在 getStaticProps 函数中序列化 Next.js 时出错?

    我在用着getStaticProps 函数 我无缘无故地收到此错误 错误 序列化错误 posts 0 从返回getStaticProps在 原因 object object Object 无法序列化为 JSON 请仅返回 JSON 可序列化
  • 使用 php 获取 mysql 表中记录总数的最佳方法是什么?

    从大表中选择记录总数的最有效方法是什么 目前 我只是在做 result mysql query SELECT id FROM table total mysql num rows result 有人告诉我 如果表中有很多记录 这不是很有效或
  • stringByAppendingPathComponent,它是如何工作的?

    编辑 v002 我看了所有的评论 我开始明白我应该做什么 为此 我修改了我的代码 见下文 我将 newPath 更改为 NSString 删除了 alloc init 和结束 release 因为它现在由系统处理 我正在使用 stringB
  • 向量上的修改时复制语义不会在循环中追加。为什么?

    这个问题听起来似乎得到了部分回答here但这对我来说还不够具体 我想更好地理解何时通过引用更新对象以及何时复制对象 更简单的例子是向量增长 下面的代码在 R 中效率极低 因为在循环之前没有分配内存 并且在每次迭代时都会创建一个副本 x ru
  • Java中有instanceOf(Class c)之类的东西吗?

    我想检查一个对象是否o是该类的一个实例C或的一个子类C 例如 如果x属于班级Point I want x instanceOf Point class to be true并且x instanceOf Object class to be
  • 在 Matlab 中通过函数句柄传递附加参数

    我有一个需要优化的函数 比如 Matlab 中的 Function 该函数取决于我想要优化的变量 例如 x 和一个不需要优化的参数 例如 Q 因此 函数 Function x Q 换句话说 我有一个 Q 值数组 并且想要为每个 Q 找到最佳
  • 获取现有的或创建新的 akka actor

    我正在尝试使用 ActorFor 获取现有的 ActorRef 或创建一个新的 ActorRef 如果它不存在 我有以下代码 但它似乎没有按预期工作 isTermminate 始终为 true ActorSystem system Acto
  • 原子操作会阻塞其他线程吗?

    我试图让 原子与非原子 的概念在我的脑海中扎根 我的第一个问题是我找不到 现实生活中的类比 就像原子操作上的客户 餐厅关系或类似的东西 我还想了解原子操作如何将自己置于线程安全编程中 在这篇博文中 http preshing com 201
  • 安装:Microsoft Visual C++ Redistributable 卡在“正在处理:Windows7_MSU_X64”

    我正在尝试安装 Microsoft Visual C Redistributable 软件包 因为无法安装我的 xampp apache 模块 安装需要很长时间才能完成 我应该怎么办 这种情况常见吗 我所要做的就是等待吗 他们完全被这个设置
  • 如何检查FormData?

    我试过了console log并使用循环遍历它for in 这里是MDN 参考在 FormData 上 两种尝试都在这fiddle var fd new FormData key poulate with dummy data fd app
  • 在 PyQt 中绘制多边形

    背景 我想在屏幕上绘制一个简单的形状 并且我选择 PyQt 作为要使用的包 因为它似乎是最成熟的 我并没有以任何方式锁定它 Problem 仅在屏幕上绘制一个简单的形状 例如多边形 似乎过于复杂 我发现的所有示例都尝试做很多额外的事情 但我