2016-03-30 12 views
2

Bir Python dosyasını bir QML dosyasında veriyorum. QML'den Python dosyasında değer alıyorum ve QJSValue değeri türünü, Python listesine dönüştürmek istiyorum. nasıl yapacağımı bilmiyorum.Python ve QML'deki QJSValue Python listesine nasıl dönüştürebilirim?

aşağıda benim kodumdur.

test.python

#!/usr/bin/env python 
# encoding: utf-8 

from PyQt5.QtCore import QUrl, QObject, pyqtSlot,QVariant 
from PyQt5.QtWidgets import QApplication 
from PyQt5.QtQuick import QQuickView 
from PyQt5.QtQml import QJSValue 

class MyMain(QObject): 

    @pyqtSlot(QJSValue) 
    def get_value(self,value): 
     print(value,type(value)) 


if __name__ == '__main__': 
    path = 'test.qml' 
    app = QApplication([]) 
    view = QQuickView() 
    con = MyMain() 
    context = view.rootContext() 
    context.setContextProperty("con",con) 
    view.engine().quit.connect(app.quit) 
    view.setSource(QUrl(path)) 
    view.show() 
    app.exec() 

test.qml

import QtQuick 2.4 
import QtQuick.Controls 1.3 

Button { 
     text: "click" 
     onClicked: { 
       con.get_value([{"name":"a","text":"1"},{"name":"b","text":"2"}]) 
      } 
    } 

cevap

1

Ben bu soruyu çok eski olduğunu biliyoruz, ama ben de çözümü nasıl yaşamaya başladığını sonrası düşünmüştüm Bir başkasının Google üzerinden üzerine tökezlemesi. Teknik olarak python listesine doğrudan dönüştürme olmasa da, yararlı bulduğum, örneği QVariant'a dönüştüren myQJSValueInstance.toVariant() yapmaktı. Nesneyi gerektiği gibi kullanabilirim (örneğin, normal bir python listesiymiş gibi yineleyerek).