2011-03-10 8 views
1

私はスロットからQObjectを返そうとしています。私はPySideとQMLを使用しています。私は私が手戻り値CONSOLE.LOGときどのようにオブジェクトをPythonからQMLに戻しますか?

class myClass(QtCore.QObject): 
    def __init__(self): 
     self.object = QtCore.QObject() 

    QtCore.Slot(result=object) 
    def myFunc(self): 
     return self.object 

QVariant(PySide::PyObjectWrapper) 

を、私はこの事のうちの値を取得するように見えることができない私のコードは次のようになります。誰かが私を正しい方向に向けることができますか?私はプリミティブ型(int、strなど)を返すことができますが、オブジェクト、リスト、および辞書は私の外にあります。どんな助けでも大歓迎です。

EDIT

私は、ドット表記を使用して、オブジェクトのプロパティにアクセスしようとしています。誰かが私にこの事例を示すことができれば、非常に役に立ちます。しかし、私はオブジェクトを戻すことができれば私は自分で距離を行くことができると思う。再度、感謝します!

おかげ

ジャック

+0

QMLはどのようなものが見えますか?あなたは実際に何をしようとしていますか? –

+0

うわー!私はこの質問がどれほど古いのか分からなかった! –

答えて

2

だから、ここで私はあなたがしようとしている考える何を何かがあります。どこかをクリックすると、青色の領域が緑色に変わります。これは、信号によって渡されるオブジェクト上のcolorプロパティを変更することによって行われます。付属のQMLファイル(私はそれがpass_an_object.qml呼ばれてきた)で

#!/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) 

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) 
     } 

    } 
} 
関連する問題