QML与Python通信

本文介绍了如何在PyQt5和QML之间进行通信,包括QML显式调用Python函数、Python函数返回值给QML、QML信号触发Python函数和Python调用QML方法。通过实例展示了各种通信方式的实现代码和运行效果。
摘要由CSDN通过智能技术生成

    对于Python3和QML通信,实际上就是PyQt5+QML+Python3混合编程,这是必须的,因为QML做图形界面比较容易,但是做功能实现就用Python比较好,虽然QML也能嵌入JavaScript代码进行实现,但是这样话还不如用Python来实现,代码简洁、易懂。

    对于以下的例子,参考了如下的连接:

Connecting QML signals in PySide:

http://qt-project.org/wiki/Connecting_QML_Signals_in_PySide 

PyQt 5.1.1 Reference Guide -> Support for Signals and Slots:

http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html?highlight=pyqtslot#PyQt5.QtCore.pyqtSlot

(1)QML显式的调用Python函数

定义一个类,并继承QtCore.QObject对象,并使用@修饰符修饰pyqtSlot

class MyClass(QObject):
    @pyqtSlot(str)    # 传递参数类型字符串
    def outputString(self, string):
        """
        功能: 创建一个槽
        参数: 输出的数据string
        返回值: 无
        """
        print(string)

创建rootContext对象,并使用setContextProperty(string, object)注册对象,这样在QML中就可以调用这个函数了。

context = view.rootContext()
context.setContextProperty("con", con)

如下是一个完整的例子:

这个例子运行后,如果点击鼠标的话,会在控制台打印字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值