«

QML Send Signal to Python

admin 发布于 阅读:209 PyGUI


以下代码实现了QML通过槽函数发送信号给Python,调用Python函数的过程。

import QtQuick 2.5
import QtQuick.Controls 2.5

// 创建一个矩形Rectangle
Rectangle {
    width: 640
    height: 400
    color: "lightgray"
    Button {
        id: bt_print
        x: 10
        y: 10
        width: 100
        height: 40
        //anchors.topMargin
        text: "Send Signal"
        onClicked:{
            my_printer()  // 定义一个按下按钮的信号
        }
    }
    Button {
        id: bt_quit
        x: 10
        y: 60
        width: 100
        height: 40
        //anchors.topMargin
        text: "close window"
        onClicked: {
            quit_Quick()
        }
    }
    // 定义信号,供Python连接
    signal my_printer()
    signal quit_Quick()

}
import sys
from PySide6.QtWidgets import QApplication
from PySide6.QtQuick import QQuickView
from PySide6.QtCore import Slot, QUrl

# 定义一个槽函数,不接受参数
@Slot()
def my_printer():
    print("你成功连接了Python槽函数")

@Slot()
def exit_application():
    sys.exit(0)

def main():
    app = QApplication([])
    view = QQuickView()
    view.setSource(QUrl("3button.qml"))
    view.show()

    root_object = view.rootObject()
    if root_object is None:
        print("No root object")
        return -1
    # 将槽函数连接到 QML 中的信号
    root_object.my_printer.connect(my_printer)
    root_object.quit_Quick.connect(exit_application)
    return app.exec()

if __name__ == "__main__":
    main()

python QML