我对python和PyQT还很陌生,已经被卡住了。如果我的代码有点乱的话,我道歉。我花了不少时间寻找,但还没有找到任何对我的情况有帮助的东西。在
我在试着找出哪个椭圆被点击了。在
我基本上有一个部分,它在圆中创建椭圆,并根据列表数组中的值打印文本:
class MyFrame(QtWidgets.QGraphicsView):
def __init__(self, parent = None ):
super(MyFrame, self).__init__(parent)
self.setScene(QtWidgets.QGraphicsScene())
self.setBackgroundBrush(QtGui.QColor(QtCore.Qt.darkGray))
self.setRenderHints(self.renderHints() | QtGui.QPainter.Antialiasing | QtGui.QPainter.SmoothPixmapTransform)
arLights = list( {} for i in xrange(12) )
circX = 0
circY = 0
maxX = 0
maxY = 0
i = 0
pen = QtGui.QPen(QtGui.QColor(QtCore.Qt.lightGray).darker(50))
brush = QtGui.QBrush(QtGui.QColor(QtCore.Qt.lightGray))
font = QtGui.QFont('White Rabbit')
font.setPointSize(12)
arLights = getLights()
theta = radians(360)
columns = len(filter(None, arLights))
alpha = theta / columns
for a in range(columns):
angle = a * alpha
circX = (w + x) * cos(angle)
circY = (h + y) * sin(angle)
item = callbackEllipse(circX, circY, w, h) #(x+xi*(w+x), y+yi*(h+y), w, h)
item.setAcceptHoverEvents(True)
item.setPen(pen)
item.setBrush(brush)
self.scene().addItem(item)
item.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable)
self.writeText(arrLight[i]['name'], circX + (w / 4), circY + (h * 0.75))
i = i + 1
这是我的mouseReleaseEvent,在这里,我试图用我用来排列它们的公式,计算出与椭圆相关的名称。在
^{pr2}$这不符合预期。我尝试过.sceenPos().screenPos()和.pos(),但它们似乎与我创建省略号时的坐标不匹配,导致它识别错误的关联文本或根本找不到匹配项。在
有人能帮我找出椭圆的方法吗?或者为什么我的代码不能按我想要的方式工作?似乎没有一种方法来“命名”它们,这会更容易些。在
不要不必要地工作两次,保存一个值引用并打印它,因为只有在按下该项时才会调用
mouseReleaseEvent()
:相关问题 更多 >
编程相关推荐