问题描述
我发现,在继承自 QGraphicsItem
和 QObject
的类中,调用 QGraphicsItem.setFlags()
会导致 PyQt5 中的立即、无错误的崩溃。以下示例演示了这一点
import sys
from PyQt5.QtCore import QObject,QRectF
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QGraphicsItem,QGraphicsView,QGraphicsScene,QMainWindow,QApplication
class Item(QObject,QGraphicsItem):
def __init__(self):
QObject.__init__(self)
QGraphicsItem.__init__(self)
self.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsMovable |
QGraphicsItem.ItemSendsScenePositionChanges)
def boundingRect(self) -> QRectF:
return QRectF(0,50,50)
def paint(self,painter,option,widget=...) -> None:
painter.fillRect(self.boundingRect(),QColor('#555555'))
class View(QGraphicsView):
def __init__(self):
super().__init__()
self.resize(400,300)
scene = QGraphicsScene(self)
scene.setSceneRect(0,self.width(),self.height())
self.setScene(scene)
def mousepressEvent(self,event) -> None:
QGraphicsView.mousepressEvent(self,event)
if event.isAccepted():
return
newitem = Item()
self.scene().addItem(newitem)
newitem.setPos(event.pos())
class ViewWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setCentralWidget(View())
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = ViewWindow()
widget.show()
app.exec_()
相同的代码在 pyside2 上运行良好。我错过了什么吗?我使用的是 Python 3.9.5 和 PyQt5 5.15.4。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)