标签: qpolygon

查找QPolygon是否包含QPoint-未给出预期结果

我正在PyQt中开发一个程序,并创建一个小部件来显示一个网格以及该网格上的一组多边形,您可以在这些多边形上移动并单击。当我尝试实现多边形的单击时,它似乎不起作用。以下是无效的功能:

def mouseMoveCustom(self, e):
    for poly in reversed(self.polys):
        if poly.contains(e.pos()):
            self.cur_poly = poly
            self.setCursor(Qt.PointingHandCursor)
            print('mouse cursor in polygon')
            break
        else:
            self.setCursor(Qt.CrossCursor)
Run Code Online (Sandbox Code Playgroud)

对于背景,self.polys是名单QPolygonse.pos()为鼠标的位置。我尝试进入

print(poly)
print(poly.contains(QPoint(1,1)))
Run Code Online (Sandbox Code Playgroud)

测试它是否适用于控制点,但是在控制台中,它只会给我以下内容:

<PySide.QtGui.QPolygon(QPoint(50,350) QPoint(50,0) QPoint(0,0) QPoint(0,350) )  at 0x000000000547D608>
False
Run Code Online (Sandbox Code Playgroud)

我在这里做错什么了吗,或者如何将上面的“多边形”转换为QPolygon可以使用的实际值?

编辑:

这是用于生成列表的代码self.polys

self.polys.append(QPolygon([QPoint(points[i][X]+self.transform[X], points[i][Y]+self.transform[Y]) for i in range(len(points))]))
Run Code Online (Sandbox Code Playgroud)

使用内联for循环将QPolygons列表添加到列表中可能会出现问题吗?

python pyqt qpolygon

4
推荐指数
1
解决办法
988
查看次数

如何计算QPolygon面积

我试图获得蓝色和绿色 QPolygon 的交集,以及它构成蓝色 QPolygon 的百分比(见下图)。

在此处输入图片说明

我创建的多边形如下:

import PyQt5
from PyQt5 import QtWidgets,QtGui,QtCore

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

import sys, math


class MyWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.pen1 = QtGui.QPen(QtGui.QColor(20,0,250))                      # set lineColor
        self.pen = QtGui.QPen(QtGui.QColor(0,0,0))                      # set lineColor
        self.pen2 = QtGui.QPen(QtGui.QColor(0,250,0))                      # set lineColor

        self.pen.setWidth(3)                                            # set lineWidth
        self.brush = QtGui.QBrush(QtGui.QColor(255,255,255,10))        # set fillColor
        
        coords = [PyQt5.QtCore.QPointF(640.0, 334.0), PyQt5.QtCore.QPointF(626.0, 462.0), PyQt5.QtCore.QPointF(782.0, 509.0), PyQt5.QtCore.QPointF(807.0, 373.0), PyQt5.QtCore.QPointF(807.0, 333.0)]
        greenpolygoncoords = [PyQt5.QtCore.QPointF(698.0, 373.0), PyQt5.QtCore.QPointF(690.0, 433.0), …
Run Code Online (Sandbox Code Playgroud)

python geometry intersection qpolygon pyqt5

1
推荐指数
1
解决办法
67
查看次数

标签 统计

python ×2

qpolygon ×2

geometry ×1

intersection ×1

pyqt ×1

pyqt5 ×1