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

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

这时我们可以用以下方式,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。

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

相关推荐
北冥有鱼被烹1 小时前
砷化镓与磷化铟:光模块的地基——从化学键到AI缺货潮的底层逻辑
人工智能·python
for_ever_love__2 小时前
线性回归与梯度下降——从零手写一个模型
python·机器学习·线性回归·梯度下降
code_whiter3 小时前
7.自动化测试常用函数
python·功能测试
小园子的小菜3 小时前
Python协程深度解析:从原理演进到实战避坑
后端·python
砚底藏山河3 小时前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven
GitFun4 小时前
给策略加了条-8%止损线,11年只触发1次
python·股票·量化交易
马六六i4 小时前
市面上正规的IP驱动产业新场景新工具有哪些
大数据·网络·python·tcp/ip
I Am a robert girl5 小时前
稀有事件估计的迭代去对齐:从源码视角拆解重要性采样新范式
开发语言·python·机器学习·重要性采样·蒙特卡洛方法·稀有事件估计
天若有情6735 小时前
开源|Comfort Lang v1.0.1,一款主打清爽交互的新型命令式编程语言
python·开源·交互·编程语言·项目分享·repl·comfort lang
打工仔折腾 AI6 小时前
System Prompt 替代 Few-shot:用规则约束大模型输出的省钱实践
java·人工智能·python·spring·langchain·prompt·ai agent 实战