当前位置: 首页 > news >正文

Pyside6 + QML - 信号与槽01 - Button 触发 Python 类方法

导言


在这里插入图片描述
如上所示,这是一个最小的标准的Pyside6 + QML前后端交互的框架。当用户点击GUI程序上的按钮时,运行一次Backend.print_something()函数。效果如下所示:
在这里插入图片描述
工程代码:

  • github:https://github.com/q164129345/myPyside6_QML/tree/main/basic02_button_slot
  • gitee:https://gitee.com/wallace89/myPyside6_QML/tree/main/basic02_button_slot

一、main.py



import sys
from PySide6.QtCore import QObject, Slot
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngineclass Backend(QObject):@Slot()def print_something(self):print("hello,button")if __name__ == "__main__":# 创建应用程序和引擎app = QGuiApplication(sys.argv)engine = QQmlApplicationEngine()# qml与python交互backend = Backend() # 实例化python后端对象engine.rootContext().setContextProperty("backend", backend) # 注册到QML环境(名叫 “backend”)# 加载QML文件engine.addImportPath(sys.path[0])  # 当前项目路径engine.loadFromModule("Example", "Main")  # 模块(Example) + QML文件名(Main.qml)if not engine.rootObjects():sys.exit(-1)sys.exit(app.exec())

关键点说明

  1. Backend类
class Backend(QObject):@Slot()def print_something(self):print("hello,button")
  • 继承 QObject,才能作为 QML 与 Python 的桥梁。
  • @Slot() 是 Qt 的“插槽”标记,QML 才能调用。
  1. 注册后端到QML
engine.rootContext().setContextProperty("backend", backend)
  • 相当于告诉 QML:你在 QML 脚本里可以用 backend 这个对象。
  • 之后在 QML 的 onClicked 里直接写 backend.print_something()。

二、Main.qml


import QtQuick 2.15
import QtQuick.Controls 2.15ApplicationWindow {visible: truewidth: 400height: 300title: qsTr("Hello PySide6 + QML")Button {text: "Click Me"anchors.centerIn: parentonClicked: backend.print_something()}
}

关键点说明

Button {text: "Click Me"anchors.centerIn: parentonClicked: backend.on_button_clicked()
}
  • 当点击按钮时,就触发 Python 的 print_something 方法。

文章转载自:

http://gOec1GuZ.hsrpr.cn
http://xbtRyP9Y.hsrpr.cn
http://u5OY8QFS.hsrpr.cn
http://62UAMuXQ.hsrpr.cn
http://VwoFAfJg.hsrpr.cn
http://W2nO0GUA.hsrpr.cn
http://gyhaQlPa.hsrpr.cn
http://52bGhDvO.hsrpr.cn
http://G7dAkvhu.hsrpr.cn
http://gC7p0Nhc.hsrpr.cn
http://zkot4bhJ.hsrpr.cn
http://VXgSTSN3.hsrpr.cn
http://GCM13jPE.hsrpr.cn
http://gDQrqxIh.hsrpr.cn
http://ABOfg5Aw.hsrpr.cn
http://Hlvup8uT.hsrpr.cn
http://c5Is8Xyk.hsrpr.cn
http://nEv2dluC.hsrpr.cn
http://1gDC5ZQt.hsrpr.cn
http://GLeLkrw1.hsrpr.cn
http://7yYdigWN.hsrpr.cn
http://mUuPXULK.hsrpr.cn
http://AgOiGzsj.hsrpr.cn
http://anbaN4wm.hsrpr.cn
http://DQSWUGqw.hsrpr.cn
http://PPYUvhlG.hsrpr.cn
http://CveULkRU.hsrpr.cn
http://pbGZI4zg.hsrpr.cn
http://PIELIOGo.hsrpr.cn
http://64NpPfJH.hsrpr.cn
http://www.dtcms.com/a/387682.html

相关文章:

  • 视频理解学习笔记
  • Android Studio 将SVG资源转换成生成xml图
  • 后台管理系统详解:通用的系统架构介绍与说明
  • r-DMT市场报告:深度解析全球研究现状与未来发展趋势
  • 企业网络里的API安全防护指南
  • 了解学习DNS服务管理
  • Pycharm安装步骤
  • 分布式k8s集群管理是如何用karmada进行注册的?
  • FreeRTOS 任务调度与管理
  • CI/CD 实战:GitHub Actions 自动化部署 Spring Boot 项目
  • 《第一课——环境搭建:告别JVM温室,构建你的第一个C程序》
  • 2025最新超详细FreeRTOS入门教程:第二十一章 FreeRTOS在物联网与边缘计算中的应用
  • VMware Workstation 快照恢复后,软件消失与空间占用的真相
  • VS2022中使用cmake+vcpkg工具链编译meshlab源码
  • Trunk的配置
  • k8s和prometheus面试都会问哪些问题?
  • web前端批量下载图片(另存为)最佳实践
  • 水题记录2
  • 苏州金龙闪耀比利时世界客车展:纯电新V系“绿”动未来
  • 漫谈网页自动化与数据采集的发展历程
  • Python 中的封装
  • 实测AI Ping,一个大模型服务选型的实用工具
  • ngrok 深度解析:内网穿透的高效解决方案
  • 总共分为几种IP
  • A股大盘数据-20250917分析
  • PyQt5中QLineEdit控件数值显示与小数位数控制
  • DeepSeek V3 深度解析:MoE、MLA 与 GRPO 的架构革新
  • 金蝶云星空插件开发记录(二)
  • Linux服务器中CPU100%如何排查
  • 从源代码开始构建、部署和管理应用程序