Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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
试图得到公正的回答;x";坐标from pos()方法python_Python_Position_Mouseevent_Pyqt4 - Fatal编程技术网

试图得到公正的回答;x";坐标from pos()方法python

试图得到公正的回答;x";坐标from pos()方法python,python,position,mouseevent,pyqt4,Python,Position,Mouseevent,Pyqt4,我目前在获取光标的x位置时遇到了一个问题,因此我可以在该x和y位置上放置一个标记。我正在使用QGraphicscene和view在单击鼠标时在鼠标位置创建这个圆形对象。由于QGraphicsSellipseitem有4个参数,我似乎需要x和y坐标分开,而不仅仅是position方法给出的,因为它同时给出x和y。如何将这两个坐标分开?代码如下: import sys from PyQt4 import QtGui, QtCore def paintMarkers(self): s

我目前在获取光标的x位置时遇到了一个问题,因此我可以在该x和y位置上放置一个标记。我正在使用QGraphicscene和view在单击鼠标时在鼠标位置创建这个圆形对象。由于QGraphicsSellipseitem有4个参数,我似乎需要x和y坐标分开,而不仅仅是position方法给出的,因为它同时给出x和y。如何将这两个坐标分开?代码如下:

import sys
from PyQt4 import QtGui, QtCore    

def paintMarkers(self):
    self.cursor = QtGui.QCursor()
    self.x,y = self.cursor.pos()
    self.circleItem = QtGui.QGraphicsEllipseItem(self.x,self.y,10,10)
    self.scene.addItem(self.circleItem)
    self.circleItem.setPen(QtGui.QPen(QtCore.Qt.red, 1.5))
    self.setScene(self.scene)

def mousePressEvent(self,QMouseEvent):
    self.view.paintMarkers()

非常感谢

我不是100%清楚您的问题是什么(您是否遇到异常?它是否运行但得到意外的输出?),但这一行看起来像是罪魁祸首:

self.x,y = self.cursor.pos()
这将创建
x
作为
self
的属性,然后创建一个与
self
完全没有关联的局部变量
y
。如果希望这两个属性都是
self
,请执行以下操作

self.x, self.y = self.cursor.pos()

如果您在尝试执行
QGraphicsEllipseItem(self.x,self.y,10,10)
时出错,这将解释为什么-
self.y
不存在,所以它会给您一个属性错误。

好吧,是的,这是一个愚蠢的错误哈哈,但现在我得到了这个错误类型错误:“QPoint”对象不是Iterableh,我想你不能那样做。请尝试
self.x,self.y=self.cursor.pos().x(),self.cursor.pos().y()
。好的,这似乎可行,但现在点的位置和我实际的鼠标光标之间有一点距离差异。这听起来像是一个完全不同的问题,所以也许你应该写一篇新文章。