QML使用Python的函数
生活随笔
收集整理的這篇文章主要介紹了
QML使用Python的函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有2種方法:
一、 QML中定義一個信號,連接Python里的函數;
這里的函數不用特意指明為槽函數,普通函數即可。
QML的信號連接Python的函數
QML:
首先在QML中定義一個信號,這里的信號傳遞一個字符串給函數(信號可帶參數也可不帶):
然后在click中發射這個信號:
onClicked:{root.mySignal("hello world") }Python:
使用QML里的信號連接Python里的函數:
完整代碼:
QML:
Python:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' from PyQt5.QtCore import QObject from PyQt5.QtGui import QGuiApplication from PyQt5.QtQml import QQmlApplicationEngine import sysclass MyWindow(QObject):def __init__(self):super().__init__()self.engine = QQmlApplicationEngine()self.engine.load('qml-test.qml')# root signalmy_obj = self.engine.rootObjects()[0]my_obj.mySignal.connect(self.my_func)def my_func(self, my_string):print(my_string)if __name__ == '__main__':app = QGuiApplication(sys.argv)window = MyWindow()sys.exit(app.exec())二、 Python中定義一個類及槽函數,在QML中使用這個槽函數。
在QML中調用Python中的槽函數
首先需要在Python里定義一個類,在類里寫一個槽函數:
然后通過setContextProperty將這個類設置為上下文的一個屬性值:
person = Person() engine.rootContext().setContextProperty('person', person)QML文件里不需特別設置,直接調用函數即可。
完整代碼:
Python:
QML:
import QtQuick 2.12 import QtQuick.Controls 2.12ApplicationWindow {id: rootwidth: 250height: 500visible: trueButton{text:qsTr("begin")onClicked: {person.begin()}} }總結
以上是生活随笔為你收集整理的QML使用Python的函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python实现-中介者模式
- 下一篇: 使用python操作常用的库-kafka