Pyside2 : अद्यतन QML TableView मॉडल का उपयोग कर संपत्ति

0

सवाल

मैं एक अजगर वर्ग के नाम के प्रबंधक और यह पंजीकृत किया गया है इस तरह :

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?

pyside2 python qml qt
2021-11-14 12:54:04
2

सबसे अच्छा जवाब

1

यदि आप कर रहे हैं बनाने के लिए एक बाध्यकारी फिर संपत्ति होना चाहिए notifiable, कि है, एक से जुड़े संकेत और फेंकना यह जब यह परिवर्तन:

class Manager(QObject):
    processResult = Signal(bool)
    df_changed = Signal()

    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
        self.df_changed.emit()

    paramDs = Property(str, read_ds, set_ds, notify=df_changed)
2021-11-14 15:00:48
0

आप सेट करना चाहिए पंक्ति मूल्य स्थापित करने के बाद, संपत्ति, इस तरह:

        tbModel.setRow(1,
            {
                param_name: "number of classes",
                value: backend.paramDs
            }
        )

tbModel है आईडी के साथ अपनी मेज पर देखने के मॉडल

2021-11-14 14:24:15

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में