Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 鼠标压力捕捉不必要的信号-PyQt4_Python_Mouseevent_Pyqt4_Polygon_Qgraphicsview - Fatal编程技术网

Python 鼠标压力捕捉不必要的信号-PyQt4

Python 鼠标压力捕捉不必要的信号-PyQt4,python,mouseevent,pyqt4,polygon,qgraphicsview,Python,Mouseevent,Pyqt4,Polygon,Qgraphicsview,因此,我有一个QraphicsScene和一个QGraphicsPolygonItem,我将其标记为可移动。我还覆盖了MousePressEvent。我的代码片段现在是tll def mousePressEvent(self , e): self.endx = e.x() self.endy = e.y() if self.sender == 1: self.LineChange(self.endx , self.endy) #... def Crea

因此,我有一个QraphicsScene和一个QGraphicsPolygonItem,我将其标记为可移动。我还覆盖了MousePressEvent。我的代码片段现在是tll

def mousePressEvent(self , e):
    self.endx = e.x()
    self.endy = e.y()
    if self.sender == 1:
        self.LineChange(self.endx , self.endy)

#...

def CreateFun(self):
    poly = QtGui.QPolygonF([QtCore.QPointF(100 , 100) , QtCore.QPointF(100 , 200) , QtCore.QPointF(200 , 200)])
    self.polygon = QtGui.QGraphicsPolygonItem(poly)
    self.scene.addItem(self.polygon)
    self.polygon.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
但是,多边形没有移动。当我注释掉MousePressEvent时,它运行良好。我猜是老鼠女发言人在多党统治之前抓住了它


上述函数来自从QtGui.QGraphicsView继承的类。有什么建议吗?

您应该调用
mousePressEvent
的基本实现
QGraphicsView
通常会将这些单击传递给可能使用它们的其他项目。如果不调用基本实现,那么基本上就是在“捕获”单击

修改您的
mousePressEvent
,如下所示:

def mousePressEvent(self , e):
    self.endx = e.x()
    self.endy = e.y()
    if self.sender == 1:
        self.LineChange(self.endx , self.endy)
    # let the base implementation do its thing
    super(Palette, self).mousePressEvent(e)

您应该调用
mousePressEvent
的基本实现
QGraphicsView
通常会将这些单击传递给可能使用它们的其他项目。如果不调用基本实现,那么基本上就是在“捕获”单击

修改您的
mousePressEvent
,如下所示:

def mousePressEvent(self , e):
    self.endx = e.x()
    self.endy = e.y()
    if self.sender == 1:
        self.LineChange(self.endx , self.endy)
    # let the base implementation do its thing
    super(Palette, self).mousePressEvent(e)

没有完整的代码很难诊断。这是我至今的代码。我只是想让用户界面有一个直角三角形,可以移动,角度可以编辑@你能查一下我的密码吗@没有完整的代码很难诊断。这是我至今的代码。我只是想让用户界面有一个直角三角形,可以移动,角度可以编辑@你能查一下我的密码吗@再次感谢你。我还有一个问题。假设我有一个带有4个角的QPolygonF项,它被传递给QGraphicsPolygonItem,而QGraphicsPolygonItem又被设置为QGraohicsScene。我想根据用户单击的位置扩展或基本旋转多边形,我一直在尝试查找语法,但无法找到。有什么建议吗?@Manoj:旋转很容易。这就是你所需要的。扩展取决于您想要什么。最简单的方法是计算并重新设置
QPolygonF
。或者你可以做一个
QTransform
并用
setTransform
应用它。我想我对语法感到困惑,你能帮我整理一下吗,@Manoj:
QGraphicsPolygonItem
没有保留原来的
QPolygonF
。因此修改
多边形
不会影响您的物品。更改
QPolygonF
后,使用项目的
setPolygon
再次进行设置。(例如:
poly.setPolygon(polygon)
)再次感谢。我还有一个问题。假设我有一个带有4个角的QPolygonF项,它被传递给QGraphicsPolygonItem,而QGraphicsPolygonItem又被设置为QGraohicsScene。我想根据用户单击的位置扩展或基本旋转多边形,我一直在尝试查找语法,但无法找到。有什么建议吗?@Manoj:旋转很容易。这就是你所需要的。扩展取决于您想要什么。最简单的方法是计算并重新设置
QPolygonF
。或者你可以做一个
QTransform
并用
setTransform
应用它。我想我对语法感到困惑,你能帮我整理一下吗,@Manoj:
QGraphicsPolygonItem
没有保留原来的
QPolygonF
。因此修改
多边形
不会影响您的物品。更改
QPolygonF
后,使用项目的
setPolygon
再次进行设置。(例如:
多边形集合多边形(多边形)