Python 鼠标压力捕捉不必要的信号-PyQt4
因此,我有一个QraphicsScene和一个QGraphicsPolygonItem,我将其标记为可移动。我还覆盖了MousePressEvent。我的代码片段现在是tllPython 鼠标压力捕捉不必要的信号-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
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
再次进行设置。(例如:多边形集合多边形(多边形)
)