上述的解决代码中分别在初始化矩形的代码中与定义onMoved函数与onContextMenu函数的定义出现了不合法的报错,请进行修改重新发出代码
时间: 2024-03-17 13:40:22 浏览: 52
非常抱歉,可能是我之前的代码有误导。以下是修改后的代码:
```python
class MyRect(QtWidgets.QGraphicsRectItem):
def __init__(self, x, y, w, h):
super().__init__(x, y, w, h)
self.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable)
self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
def mousePressEvent(self, event):
if event.button() == QtCore.Qt.RightButton:
menu = QtWidgets.QMenu()
delete_action = menu.addAction("Delete")
action = menu.exec_(self.mapToGlobal(event.pos()))
if action == delete_action:
self.scene().removeItem(self)
def mouseMoveEvent(self, event):
self.scene().update()
def paint(self, painter, option, widget=None):
painter.setPen(QtGui.QPen(QtCore.Qt.black, 5))
painter.drawRect(self.rect())
class MyScene(QtWidgets.QGraphicsScene):
def __init__(self, parent=None):
super().__init__(parent)
def mousePressEvent(self, event):
rect = MyRect(event.scenePos().x(), event.scenePos().y(), 100, 100)
self.addItem(rect)
```
这份代码将 `onMoved` 函数和 `onContextMenu` 函数删除,并将其分别替换为 `mouseMoveEvent` 函数和 `mousePressEvent` 函数。同时,代码中还对 `MyRect` 类进行了一些微调,以更好地实现拖动与右键菜单功能。
阅读全文