Python PyQt 子类中回调主类的函数,回调

devtools/2025/1/16 2:29:23/

有时我们需要在子类计算完成后,回调主类的方法显示数据;

这时我们可以用以下方式,python 确实方便;

1. 子类:

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget# 子类
class SubClass:def __init__(self, main_instance):self.main_instance = main_instance  # 保存主类实例的引用def trigger_main_function(self):# 调用主类的函数self.main_instance.main_function()

2.主类

# 主类
class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("PyQt Callback Example")# 创建按钮并设置布局self.button = QPushButton("Call SubClass")self.button.clicked.connect(self.call_subclass_function)central_widget = QWidget()layout = QVBoxLayout()layout.addWidget(self.button)central_widget.setLayout(layout)self.setCentralWidget(central_widget)# 实例化子类self.sub_class_instance = SubClass(self)def call_subclass_function(self):print("MainWindow: Calling SubClass function...")self.sub_class_instance.trigger_main_function()def main_function(self):print("MainWindow: main_function called by SubClass")

3.主函数:

# 主程序入口
if __name__ == "__main__":app = QApplication([])window = MainWindow()window.show()app.exec()

4.工作原理:

  1. 主类 MainWindow

    • 实例化子类 SubClass,并将自身实例传递给子类。
    • 定义了一个函数 main_function,供子类调用。
  2. 子类 SubClass

    • 在初始化时接收主类的实例引用。
    • 通过保存的主类实例调用 main_function
  3. 按钮交互:

    • 单击按钮时,触发主类的 call_subclass_function
    • call_subclass_function 调用子类的 trigger_main_function,进而调用主类的 main_function

这样实现了子类通过回调访问主类的方法。如果你需要更复杂的逻辑,可以扩展这种模式,比如通过信号与槽实现。


http://www.ppmy.cn/devtools/150815.html

相关文章

机器学习 - 如何理解几何学中的超平面 ?

线性回归公式 ywTxb 是数据建模中的基础: 数学上,它是一个线性函数。几何上,它是一个超平面。 那么如何理解超平面这个概念呢? 超平面(hyperplane)是几何学中的一个基本概念,尤其在高维空间和…

【C语言】字符串函数详解

文章目录 Ⅰ. strcpy -- 字符串拷贝1、函数介绍2、模拟实现 Ⅱ. strcat -- 字符串追加1、函数介绍2、模拟实现 Ⅲ. strcmp -- 字符串比较1、函数介绍2、模拟实现 Ⅳ. strncpy、strncat、strncmp -- 可限制操作长度Ⅴ. strlen -- 求字符串长度1、函数介绍2、模拟实现&#xff08…

CSS语言的网络编程

CSS语言的网络编程 引言 CSS(Cascading Style Sheets,层叠样式表)是一种用于描述HTML或XML文档外观样式的样式表语言。虽然CSS本身并不是一种编程语言,但它在网页设计和开发中发挥着至关重要的作用。随着互联网的发展&#xff0…

我在2025年自学网络安全(黑客)

当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。 一、网络安全的基本概念 网络安全是一种保护:它涉及保护我们的…

GitLab本地服务器配置ssh和克隆项目

1. 本地安装好git git链接:https://git-scm.com/downloads/win 无脑点击下一步安装即可,打开Git Bash命令终端如下: 2. 配置本地用户名和邮箱 git config --global user.name "你的名字" git config --global user.email "你的邮箱&quo…

Oracle分析工具-Logminer手动指定归档文件

1.概述 Logminer是自Oracle8i以后推出的分析工具,它可以读取 Oracle 数据库的归档日志和在线日志,并将其转换为易于分析的格式。logminer分析工具由一组PL/SQL包和一些动态视图组成,Oracle提供了continuous_mine参数来进行日志的持续挖掘&am…

IOS网络协议HTTP

1、网络层基础知识 1.1、HTTP 协议层级连接性可靠性应用场景TCP传输层面向连接高文件传输、网页浏览UDP传输层无连接低实时通信、流媒体HTTP应用层基于TCP由TCP保证网页浏览、API通信 HTTP通过过程 ④⑤ 是应用层通信,①②③⑥⑦⑧⑨是运输层通信①②③是三次握手…

ASP.NET Core与GraphQL集成

一、引言:探索 C# 与ASP.NET Core、GraphQL 的协同魅力 在当今数字化浪潮中,Web 开发领域不断演进,新技术层出不穷。C# 作为.NET 平台上的中流砥柱,凭借其强大的功能与优雅的语法,成为众多开发者构建各类应用程序的得…