qml调用python_QML使用Python的函数
有2种方法:
一、 QML中定义一个信号,连接Python里的函数;
这里的函数不用特意指明为槽函数,普通函数即可。
QML的信号连接Python的函数
QML:
首先在QML中定义一个信号,这里的信号传递一个字符串给函数(信号可带参数也可不带):
signal mySignal(string my_string)
然后在click中发射这个信号:
onClicked:{
root.mySignal("hello world")
}
Python:
使用QML里的信号连接Python里的函数:
engine.rootObjects()[0].mySignal.connect(my_func) # 这里的mySignal是在QML里定义的
完整代码:
QML:
import QtQuick 2.12import QtQuick.Controls2.12ApplicationWindow {
id: root
width:250height:500visible:truesignal mySignal(string my_string)
MouseArea {
id: mouse_area
anchors.fill: parent
onClicked: {
root.mySignal("hello world")
}
}
}
Python:
from PyQt5.QtCore importQObjectfrom PyQt5.QtGui importQGuiApplicationfrom PyQt5.QtQml importQQmlApplicationEngineimportsysclassMyWindow(QObject):def __init__(self):
super().__init__()
self.engine=QQmlApplicationEngine()
self.engine.load(‘qml-test.qml‘)#root signal
my_obj =self.engine.rootObjects()[0]
my_obj.mySignal.connect(self.my_func)defmy_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里定义一个类,在类里写一个槽函数:
classPerson(QObject):def __init__(self):
super().__init__()
@pyqtSlot()#注意是槽函数!
defbegin(self):print(‘begin‘)
然后通过setContextProperty将这个类设置为上下文的一个属性值:
person =Person()
engine.rootContext().setContextProperty(‘person‘, person)
QML文件里不需特别设置,直接调用函数即可。
完整代码:
Python:
from PyQt5.QtGui importQGuiApplicationfrom PyQt5.QtQml importQQmlApplicationEnginefrom PyQt5.QtCore importQObject, pyqtSlotimportsysclassPerson(QObject):def __init__(self):
super().__init__()
@pyqtSlot()#注意是槽函数!
defbegin(self):print(‘begin‘)if __name__ == ‘__main__‘:
app=QGuiApplication(sys.argv)
engine=QQmlApplicationEngine()
person=Person()
engine.rootContext().setContextProperty(‘person‘, person)
engine.load(‘qml-test.qml‘)
sys.exit(app.exec())
QML:
import QtQuick 2.12import QtQuick.Controls2.12ApplicationWindow {
id: root
width:250height:500visible:trueButton{
text:qsTr("begin")
onClicked: {
person.begin()
}
}
}
-- END --
qml调用python_QML使用Python的函数相关推荐
- python函数定义及调用-浅谈Python中函数的定义及其调用方法
一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数�C封装独立的功能 2.调用函数�C享受封装的成果 函数的作用:在开 ...
- QML使用Python的函数
有2种方法: 一. QML中定义一个信号,连接Python里的函数: 这里的函数不用特意指明为槽函数,普通函数即可. QML的信号连接Python的函数 QML: 首先在QML中定义一个信号,这里的信 ...
- python qt信号在qml 的使用_QML使用Python的函数过程解析
有2种方法: 一. QML中定义一个信号,连接Python里的函数: 这里的函数不用特意指明为槽函数,普通函数即可. QML的信号连接Python的函数 QML: 首先在QML中定义一个信号,这里的信 ...
- Qt C++属性类型提供给 QML调用(一)
概述 由于QML引擎与Qt元对象系统的紧密集成,任何由QObject派生出来的类其公有的接口或属性都可以从QML代码中轻松访问,并且改动的地方很少,就可以让C++代码定义的功能轻松扩展QML. 任何Q ...
- python调用js库中的函数_Python 调用JS文件中的函数
Python 调用JS文件中的函数 1.安装PyExecJS第三方库 2.导入库:import execjs 3.调用JS文件中的方法 Passwd = execjs.compile(open(r&q ...
- python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)
python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...
- python如何调用cpp文件的接口函数_C++中嵌入Python调用
python嵌入到C++中 把python嵌入的C++里面需要做一些步骤 安装python程序,这样才能使用python的头文件和库 在我们写的源文件中增加"Python.h"头文 ...
- python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...
- Python自定义函数的创建、调用和函数的参数详解
这篇文章主要介绍了Python自定义函数的创建.调用和函数的参数.变量作用域等常见问题,需要的朋友可以参考下 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性 ...
- python程序设计——函数设计与调用
一.函数定义与调用 def 函数名([参数列表]):'''注释'''函数体 # 输出小于n的斐波那契数 >>def fib(n):a,b=1,1while a < n:print(a ...
最新文章
- 结构型模式 -- 代理模式(静态代理动态代理)
- runtime运行时编程一些相关知识
- 【HDU1495非常可乐】【POJ3414Pots】
- 6、单机运行环境搭建之 --CentOS-6.4安装MySQL 5.6.10并修改MySQL的root用户密码
- Linux下Crontab定时执行命令
- 芯片项目谁支持谁负责 重大损失将予以通报
- [读书笔记] - 《深度探索C++对象模型》第6章 第7章
- “形象代言人”与“抽风式管理”
- canvas drawImage() 方法绘制图片与视频
- 安装face_recognition(ModuleNotFoundError: No module named 'face_recognition')
- Windows下自动云备份思源笔记到Gitee
- python爬虫之通用爬虫和聚焦爬虫
- mvc2 mvc_MVC之外的世界
- 阿里云被攻击封多久,又该怎么解决?
- ChatGPT介绍以及一些使用案例
- 全球即将诞生第二家卡车自动驾驶上市公司,行业转折点已经到来
- android type c 耳机检测,USB Type-C 的新音频标准将帮助 Android 设备去掉 3.5mm 耳机孔...
- 2019~ROS暑期学校~ROS Summer School in China~分享
- UOS其他分区及移动硬盘带锁问题处理
- 铨顺宏RFID:射频技术应用在服装资产管理上有什么作用