我正在尝试从Slot返回一个QObject。我正在使用PySide和QML。我的代码如下所示:
class myClass(QtCore.QObject):
def __init__(self):
self.object = QtCore.QObject()
QtCore.Slot(result=object)
def myFunc(self):
return self.object
当我在console.log中获得返回值时:
QVariant(PySide::PyObjectWrapper)
我似乎无法从这件事中获得价值。有人能指出我正确的方向吗?我可以返回原始类型(如int,str等),但对象,列表和dicts超出了我的范围。任何帮助将不胜感激。
修改
我正在尝试使用点表示法访问对象的属性。如果有人能告诉我一个这方面的例子,那将非常有帮助。但是,如果我能把物体拿回来,我想我可以自己去远方。再次感谢!
由于
杰克
答案 0 :(得分:2)
所以,这就是我想要做的事情。单击任意位置时,蓝色区域会变为绿色。这是通过更改信号传递的对象的颜色属性来完成的。
#!/usr/bin/env python
import sys
from PySide import QtCore
from PySide.QtGui import QApplication
from PySide.QtDeclarative import QDeclarativeView
from PySide.QtOpenGL import QGLWidget
def some_function(passed_object):
passed_object.setProperty("color", "green")
def main(argv):
app = QApplication(argv)
display_widget = QDeclarativeView()
display_widget.setViewport(QGLWidget())
display_widget.setResizeMode(QDeclarativeView.SizeRootObjectToView)
display_widget.setSource(QtCore.QUrl('pass_an_object.qml'))
display_widget.rootObject().object_signal.connect(some_function)
display_widget.show()
display_widget.resize(640,480)
sys.exit(app.exec_())
if __name__ == '__main__':
main(sys.argv)
随附qml文件(我称之为pass_an_object.qml):
import QtQuick 1.0
Rectangle {
id: foo
width: 640
height: 640
color: "red"
signal object_signal(variant foo)
Rectangle {
id: an_object
width: 100
height: 100
color: "blue"
}
MouseArea {
anchors.fill: parent
onClicked: {
object_signal(an_object)
}
}
}