您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将QML信号连接到PySide2插槽

将QML信号连接到PySide2插槽

在这些情况下,最佳实践是创建一个QObject,将其导出到QML并在那里进行连接,这也是在C ++中完成的。

from pyside2.QtCore import QObject, QUrl, Slot
from pyside2.QtGui import QGuiApplication
from pyside2.QtQml import QQmlApplicationEngine


class Foo(QObject):
    @Slot(str)
    def test_slot(self, string):
        print(string)


if __name__ == "__main__":
    import os
    import sys

    app = QGuiApplication()
    foo = Foo()
    engine = QQmlApplicationEngine()
    engine.rootContext().setContextProperty("foo", foo)
    qml_file = "main.qml"
    current_dir = os.path.dirname(os.path.realpath(__file__))
    filename = os.path.join(current_dir, qml_file)
    engine.load(QUrl.fromLocalFile(filename))
    if not engine.rootObjects():
        sys.exit(-1)
    sys.exit(app.exec_())

import QtQuick 2.13
import QtQuick.Controls 2.13

ApplicationWindow {
    visible: true

    Button {
        anchors.centerIn: parent
        text: "Example"
        onClicked: foo.test_slot("Test")
    }
}

所有C ++ / QML良好实践也都适用于Python / QML,且更改和限制最少。

其他 2022/1/1 18:37:12 有477人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶