pyqt。你怎么知道 QGraphicsScene 中对象的类型?

pyqt. How do you know the type of object in QGraphicsScene?

我用的是pyqt4.8 + python2.7

QGraphicsScene 中,我添加了不同的对象,例如 QGraphicsEllipseItemQGraphicsProxyWidget(使用 QPushButton)。要处理不同类型的对象必须调用不同的函数。

比如改变对象的大小

对于 QGraphicsEllipseItem:

item.setRect(size)

对于 QPushButton:

item.widget().setRect(size)

ps。 setRect() for QPushButton - 是我的自定义函数

我 select 场景中的物体,想改变它们的大小。但是对于不同的对象需要调用不同的函数,需要得到像那种类型的对象才能引起想要的函数。

我得到了 selected 对象。

selItems = self.scene.selectedItems()
for item in selItems:
    ...

如何进一步了解触发所需功能的对象类型?

你可以使用方法type()

selItems = self.scene.selectedItems()
for item in selItems:
    obj_type = type(item)

并用 if 语句检查它:

if obj_type == QPushButton:
    # do stuff

或者你可以用isinstance()函数查看。

if isinstance(item, QPushButton):
    # do stuff

我以QPushButton为例,设置你要查询的widget