利用PyQt5定义GUI界面,实现不同脚本中函数处理日志在GUI界面的实时显示

利用PyQt5定义GUI界面,实现不同脚本中函数处理过程日志在GUI界面的实时显示

欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/

一、问题描述

有时候我们需要对函数进行封装,也就是创建GUI界面,但是封装过程中,可能会调用其他脚本中的函数,因此如何实现不同脚本之间函数的日志回传并在GUI界面中实时显示其他脚本程序的执行过程呢,本文给出该解决方案,希望对您的工作有所帮助。

二、示例代码

话不多说,下面笔者给出一个简单的运行代码,来说明不同脚本之间如何实现日志实时回传并在GUI界面的显示原理,读者可以根据个人需求进行更改。下面给出简单的说明:

  • script1.py:该脚本定义一个简单的GUI界面
    具体代码如下:
import sys
import threading
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QTextEdit


class ImageProcess(QWidget):
    def __init__(self):
        super().__init__()
        self.log_area = None
        self.start_button = None
        self.initUI()

    def initUI(self):
        self.setWindowTitle('实时日志显示')
        self.setGeometry(100, 100, 400, 300)

        # 创建布局
        layout = QVBoxLayout()

        # 创建日志显示区域
        self.log_area = QTextEdit()
        self.log_area.setReadOnly(True)

        # 创建按钮
        self.start_button = QPushButton('运行IQA函数')
        self.start_button.clicked.connect(self.start_iqa_function)

        layout.addWidget(self.start_button)
        layout.addWidget(self.log_area)

        self.setLayout(layout)

    def start_iqa_function(self):
        # 启动线程运行IQA函数
        self.iqa_thread = threading.Thread(target=self.run_iqa)
        self.iqa_thread.start()

    def run_iqa(self):
        import script2  # 倒入脚本2中定义的IQA函数
        script2.func_iqa(self.append_log)  # 传递日志更新函数

    def append_log(self, message):
        # 在日志显示区域添加日志信息
        self.log_area.append(message)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ImageProcess()
    ex.show()
    sys.exit(app.exec_())

  • script2.py:该脚本定义一个简单的程序,用于脚本1中的函数调用;
    具体代码如下:
import time

def func_iqa(log_callback):
    # 模拟IQA处理过程
    for i in range(10):
        time.sleep(1)
        log_message = f'日志条目 {i + 1}: IQA处理完成。\n'
        log_callback(log_message)  # 调用回调函数更新日志

运行script1.py,可以出现我们定义的简单GUI界面,具体如下:
在这里插入图片描述
点击运行IQA函数按钮,会启动scipt2.py中定义的func_iqa函数,运行后func_iqa中的处理日志会回传到GU I界面下的日志显示输出区域进行实时展示,具体效果如下:
在这里插入图片描述
具体效果,笔者可复制代码,自行测试,后面只需根据个人需求进行自定义更改即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

独不懂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值