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

Pyside6 + QML - 信号与槽06 - 一个信号触发多个函数

导言


在前面的例子里,我们学习了 QML 与 Python 的方法调用、参数传递、返回值、以及 Python 主动驱动 QML。本篇继续拓展信号与槽的用法:
一个信号可以同时连接多个普通函数。 这意味着,一个事件发生时,可以同时触发多个逻辑处理。
在这里插入图片描述
效果如下:
在这里插入图片描述
点击GUI的按钮时,同时触发了函数slot_print_message(self)与函数slot_update_counter(self)

工程代码:

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

一、main.py


# python3.10.11 - PySide6==6.9
import sys
from PySide6.QtCore import QObject, Signal, Slot
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngineclass Backend(QObject):# 定义信号buttonClicked = Signal()def __init__(self):super().__init__()# 将一个信号连接到多个函数self.buttonClicked.connect(self.print_message)self.buttonClicked.connect(self.update_counter)self._counter = 0# 打印信息def print_message(self):print("[Python] 槽函数1:按钮被点击")# 计数器更新def update_counter(self):self._counter += 1print(f"[Python] 槽函数2:按钮点击次数 = {self._counter}")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())

关键点说明

self.buttonClicked.connect(self.print_message)
self.buttonClicked.connect(self.update_counter)
  • 使用connect()方法关联信号需要触发的函数;

二、Main.qml


import QtQuick
import QtQuick.ControlsWindow {width: 300height: 200visible: truetitle: "信号与槽 05 - 一个信号多个槽"Column {anchors.centerIn: parentspacing: 10Button {text: "点击我 (触发Python信号)"onClicked: {backend.buttonClicked() // 触发 Python 端的信号}}}
}

关键点说明

Button {text: "点击我 (触发Python信号)"onClicked: {backend.buttonClicked() // 触发 Python 端的信号}
}
  • QML可以直接调用信号函数。
http://www.dtcms.com/a/396241.html

相关文章:

  • html5旅游网站八大员报名入口官网
  • 海外建站平台创建网站主题在哪里
  • 太阳能电池红外异常检测+光伏巡检创新+低空经济方案
  • 建阳网站建设wzjseo苏州网站优化哪家好
  • 自动化抓取谷歌AI实战
  • seo网站优化培训多少价格部署一个网站要做哪些工作
  • 如何免费注册网站域名个人注册公司的详细步骤
  • 龙华区住房和建设局网站官网钱多网站
  • 0基础如何做网站手机主页网站推荐
  • git status突然显示很多文件改动
  • 微网站免费软件互联网服务公司有哪些
  • 做婚纱摄影网站wordpress怎样添加模板
  • 成都科技网站建设咨指数
  • 化妆品销售网站的源代码好的空间网站
  • 快速构建网站网站上内容列表怎么做
  • 网站备案注销申请表深圳网站建设有没有市场
  • 通俗易懂地解释Bradley-Terry-Luce(BTL)模型
  • 互联网营销网站建设聊城网站建设报价
  • 做网站用什么ide制作动漫的软件
  • 建设单位到江川区住房和城乡建设局网站东莞网络推广产品的公司吗
  • 网站建设与制作实训报告qq说说赞在线自助下单网站
  • AVM 全景式监控影像系统:原理、应用与未来
  • 网站建设服务方案大型门户网站建设定制
  • 栾城住房和城乡建设局网站有哪些网站可以免费做推广的
  • 单页网站模板wap做亚马逊需要的图片外链网站
  • wordpress 适合做小说站吗2023网络营销案例分析
  • 做网站用哪种语言好广西送变电建设公司网站
  • 网站免费制作教程点餐小程序模板
  • 龙华网站建设主要工作大通证券手机版下载官方网站下载
  • 做外贸有哪些好的网站有哪些内容亚马逊aws永久免费服务器