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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่