【PySide6】QML 与 Python 交互

文章目录

前言

上位机通过 Python 丰富的软件包,调用系统的硬件资源,在 QML 中进行交互,比如通过上位机点击按键打开 Python 串口功能,并上报 Python 串口数据到 QML 界面。

  1. QML 中调用 Python 方法
  2. Python 数据上报到 QML:信号方式

实现

  1. 自定义类

PythonLogic.py

from PySide6.QCore import QObject, Slot, Signal

class PythonLogic(QObject):
	sig = Signal(list)

	@Slot()
	def say_hello(self):
		print("Hello from Python!")
		self.sig.emit([1,2,3,4])
  1. 注册对象

main.py

import sys
from pathlib import Path

from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine

# 导入自定义对象
from PythonLogic import PythonLogic

if __name__ == "__main__":
	app = QGuiApplication(sys.argv)
	engine = QQmlApplicationEngine()

	# 注册方法
	logic = PythonLogic()
	engine.rootContext().setContextProperty("PythonLogic", logic)

	qml_file = Path(__file__).resolve().parent / "main.qml"
	engine.load(qml_file)
	if not engine.rootObjects():
		sys.exit(-1)
	sys.exit(app.exec())
  1. 使用 Python 方法

main.qml

import QtQuick.Window
import QtQuick.Controls

Window {
    width: 640
    height: 320
    visible: true
    title: qsTr("Hello World")

    Button {
        text: "Click me"
        onClicked: PythonLogic.say_hello()
    }

	Connections {
	target: PythonLogic     // Python 自定义类
	function onSig(data) {  // on + 信号名(首字母大写)
		console.log(data)
	}
}

效果

在这里插入图片描述

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值