小编Jon*_*Liu的帖子

查找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
查看次数

为什么有些小部件不会拉伸以填充布局中的最大空间?

当我创建一个 QGridLayout 并向其添加几个小部件时,一些小部件不会拉伸以填充包含它的布局部分。

class Grid(QGridLayout):
    def __init__(self, grid_widget):
        arrow = QPixmap("icons/arrow.png") #initial image is facing up
        self.arrows = []
        locs = [(0,1),
                (0,2),
                (1,2),
                (2,2),
                (2,1),
                (2,0),
                (1,0),
                (0,0)]

        for rot in range(len(locs)):
            transform = QTransform().rotate(45*rot)
            icon = arrow.transformed(transform, Qt.SmoothTransformation)
            self.arrows.append(ExpandButton(icon, rot, grid_widget)) #ExpandButton inherits from QPushButton

        for i, loc in enumerate(locs):
            self.addWidget(self.arrows[i], loc[0], loc[1])
    
        self.addWidget(grid_widget, 1, 1)
Run Code Online (Sandbox Code Playgroud)

结果

如您所见,侧面的 QPushButton 不会像顶部的 QPushButton 那样拉伸以填充布局。有什么办法可以解决这个问题,以便侧面的 QPushButtons 垂直拉伸以填充布局,例如顶部的 QPushButtons 如何水平拉伸以填充那里的布局?

python pyqt

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

标签 统计

pyqt ×2

python ×2

qpolygon ×1