zoukankan      html  css  js  c++  java
  • Python操作qml对象

    1. 如何在python里获得qml里的对象?

    1.1 获取根对象

    QML:

    import QtQuick 2.12
    import QtQuick.Controls 2.12
    
    ApplicationWindow {
        id: window
         250
        height: 500
        visible: true
    
        // ...
    }

    Python:

    使用QQmlApplicationEngine类的rootObjects方法,返回的是一个列表,取索引0即是根对象。

    engine = QQmlApplicationEngine()
    engine.load('qml-test.qml')
    root_obj = engine.rootObjects()[0]

    这样就会获得id为window的ApplicationWindow对象。

    1.2 获取任意对象

    需要在qml文件中加入objecName属性!
    QML:

    import QtQuick 2.12
    import QtQuick.Controls 2.12
    
    ApplicationWindow {
        id: window
         250
        height: 500
        visible: true
        
        Text {
            id: txt
            objectName: "txt"
            text: "Click Me"
            font.pixelSize: 20
            anchors.centerIn: parent
        }
    }

    Python:

    engine = QQmlApplicationEngine()
    engine.load('qml-test.qml')
    txt_obj = engine.rootObjects()[0].findChild(QObject, "txt")

    2. 如何在python里读取和设置qml对象的属性和值?

    2.1 读取对象的属性(如Text对象)

    首先通过 findChild 获取Text对象(注意 txt 是qml文件里的 objectName):

    txt_obj = engine.rootObjects()[0].findChild(QObject, "txt")

    然后获取Text对象的text属性(使用 property):

    txt_value = txt_obj.property("text")

    2.2 设置对象的属性

    使用setProperty方法可以更改对象的属性值。

    txt_obj.setProperty("text", "Clicked!")

    完整代码:

    import sys
    
    from PyQt5.QtCore import QObject
    from PyQt5.QtGui import QGuiApplication
    from PyQt5.QtQml import QQmlApplicationEngine
    
    app = QGuiApplication(sys.argv)
    engine = QQmlApplicationEngine()
    engine.load('qml-test.qml')
    
    # 根对象
    root_obj = engine.rootObjects()[0]
    # Text对象 txt_obj = engine.rootObjects()[0].findChild(QObject, "txt")
    # 读取属性值 txt_value = txt_obj.property("text")
    # 设置属性值 txt_obj.setProperty("text", "Clicked!") sys.exit(app.exec())

    -- END --

  • 相关阅读:
    【转】Android版本升级同时Sqlite数据库的升级及之前数据的保留
    MC 在1分钟图拿出5分钟,15分钟,30分钟,1小时的K线
    MC 自己平均
    MT4 做指标模版
    MQL5 获取最后一单 利润
    MT5基础知识
    DDE复盘流程
    安装lnmp(linux nginx mysql php)
    centos 7 切换运行模式
    安装 flash player
  • 原文地址:https://www.cnblogs.com/ibgo/p/11585348.html
Copyright © 2011-2022 走看看