QML Send Signal to Python
以下代码实现了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()