QML怎么使用Python的函数

  介绍

这篇文章主要介绍QML怎么使用Python的函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

有2种方法:

<强>一、QML中定义一个信号,连接Python里的函数;

这里的函数不用特意指明为槽函数,普通函数即可。

QML的信号连接Python的函数

QML:

首先在QML中定义一个信号,这里的信号传递一个字符串给函数(信号可带参数也可不带):

signal  mySignal (string  my_string)

然后在点击中发射这个信号:

onclick: {   root.mySignal才能(“hello  world")   Python}

:

使用QML里的信号连接Python里的函数:

engine.rootObjects () [0] .mySignal.connect (my_func), #,这里的mySignal是在QML里定义的

完整代码:

QML:

import  QtQuick  2.12   import  QtQuick.Controls  2.12      ApplicationWindow  {   id:才能根   ,,宽度:250   ,,身高:500   可见:才能正确      signal 才能;mySignal (string  my_string)      MouseArea {才能   ,,,id: mouse_area   ,,,anchors.fill:父母   ,,,onclick:, {   ,,,,,root.mySignal (“hello  world")   ,,,}   ,,}   Python:}

得到PyQt5.QtCore  import  QObject   得到PyQt5.QtGui  import  QGuiApplication   得到PyQt5.QtQml  import  QQmlApplicationEngine   import 系统   class  MyWindow (QObject):   def 才能__init__(自我):   ,,,超级(). __init__ ()   ,,,self.engine =, QQmlApplicationEngine ()   ,,,self.engine.load (& # 39; qml-test.qml& # 39;)      ,,,#,root 信号   ,,,my_obj =, self.engine.rootObjects () [0]   ,,,my_obj.mySignal.connect (self.my_func)      def 才能;my_func(自我,,my_string):   ,,,印刷(my_string)   if  __name__ ==, & # 39; __main__ # 39;:   时间=app 才能;QGuiApplication (sys.argv)   时间=window 才能;MyWindow ()   sys.exit才能(app.exec ())

<强>二,Python中定义一个类及槽函数,在QML中使用这个槽函数

在QML中调用Python中的槽函数

首先需要在Python里定义一个类,在类里写一个槽函数:

class 人(QObject):   def 才能__init__(自我):   ,,,超级(). __init__ ()      @pyqtSlot才能(),#,注意是槽函数!   def 才能开始(自我):   ,,,print(& # 39;开始# 39;)

然后通过setContextProperty将这个类设置为上下文的一个属性值:

person =,人()   engine.rootContext () .setContextProperty(& # 39;简历及# 39;,,人)

QML文件里不需特别设置,直接调用函数即可。

完整代码:Python:

得到PyQt5.QtGui  import  QGuiApplication   得到PyQt5.QtQml  import  QQmlApplicationEngine   得到PyQt5.QtCore  import  QObject pyqtSlot   import 系统   class 人(QObject):   def 才能__init__(自我):   ,,,超级(). __init__ ()      @pyqtSlot才能(),#,注意是槽函数!   def 才能开始(自我):   ,,,print(& # 39;开始# 39;)   if  __name__ ==, & # 39; __main__ # 39;:   时间=app 才能;QGuiApplication (sys.argv)   时间=engine 才能;QQmlApplicationEngine ()      时间=person 才能;人()   engine.rootContext才能().setContextProperty(& # 39;简历及# 39;,,人)      engine.load才能(& # 39;qml-test.qml& # 39;)   sys.exit才能(app.exec ())

QML:

import  QtQuick  2.12   import  QtQuick.Controls  2.12      ApplicationWindow  {   id:才能根   ,,宽度:250   ,,身高:500   可见:才能正确      按钮{才能   ,,,,,文字:qsTr (“begin")   ,,,,,onclick:, {   ,,,,,,,person.begin ()   ,,,,,}   ,,}   }

以上是“QML怎么使用Python的函数”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

QML怎么使用Python的函数