मैं एक अजगर वर्ग के नाम के प्रबंधक और यह पंजीकृत किया गया है इस तरह :
backend = Manager()
engine = QQmlApplicationEngine()
engine.rootContext().setContextProperty("backend", backend)
इसके अलावा इस वर्ग में (प्रबंधक) मैं एक संपत्ति के नाम paramDs :
from PySide2.QtCore import QObject, Signal, Property, Slot
class Manager(QObject):
processResult = Signal(bool)
def __init__(self):
QObject.__init__(self)
self.ds = "loading .."
@Slot()
def start_processing(self):
self.set_ds("500")
def read_ds(self):
return self.ds
def set_ds(self, val):
self.ds = val
paramDs = Property(str, read_ds, set_ds)
में भी मेरे qml मैं एक तालिका देखें :
import QtQuick 2.14
import Qt.labs.qmlmodels 1.0
TableView {
id:tb
anchors.fill: parent
columnSpacing: 1
rowSpacing: 1
clip: true
model: TableModel {
TableModelColumn { display: "param_name" }
TableModelColumn { display: "value" }
rows: [
{
"param_name": "Param",
"value": "Value"
},
{
"param_name": "number of classes",
"value": backend.paramDs
}
]
}
delegate: Rectangle {
implicitWidth: displayer.width + 50 <100 ? 100 :displayer.width+50
implicitHeight: 50
color : "#aa009688"
Text {
id:displayer
text: display
color : "white"
anchors.centerIn: parent
}
}
}
अब कुछ जहां में qml मैं कॉल start_processing()
स्लॉट .
अब paramDs में परिवर्तन होना चाहिए तालिका दृश्य से "लोड हो रहा है .." के लिए "500" लेकिन यह बनी पुराने "लोड हो रहा है .." मूल्य.
क्यों संपत्ति अद्यतन नहीं करता है, यह स्वयं में qml?