PyQt5编写一个输出日志

该博客介绍了一个使用PyQt5构建的日志输出程序。通过自定义线程类,实现点击按钮启动(start)和停止(stop)时在QTextBrowser控件中显示相应日志信息。程序通过连接线程信号和槽函数实现实时更新日志显示。

        首先我们拉一个界面出来,为方便演示,我们打开Qtdesigner,新建个框,往里面拉一个QTextBrowser和两个QPushButton就好,然后ui转py,界面文件test_ui.py就完成了,转换后的代码如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test_ui.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(577, 555)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(20, 10, 361, 491))
        self.textBrowser.setObjectName("textBrowser")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRec
### PyQt5编写业务逻辑的最佳实践 在 PyQt5 开发过程中,为了提升代码的可维护性和扩展性,通常会采用 **MVC(Model-View-Controller)模式** 或类似的架构来实现界面和逻辑的分离。以下是关于如何在 PyQt5编写业务逻辑的具体方法以及最佳实践。 #### 1. 使用独立类管理业务逻辑 将 GUI 和业务逻辑分开是一个重要的原则。可以通过定义单独的 Python 类来封装所有的业务逻辑,并通过信号与槽机制将其连接到 GUI 组件上[^1]。 ```python from PyQt5.QtCore import QObject, pyqtSignal, QThread from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QVBoxLayout, QWidget class BusinessLogic(QObject): log_signal = pyqtSignal(str) def __init__(self): super().__init__() def process_data(self, data): result = f"Processed Data: {data}" self.log_signal.emit(result) # 发送日志消息给GUI ``` #### 2. 利用多线程处理耗时任务 如果某些业务逻辑涉及长时间运行的操作,则应考虑使用 `QThread` 来避免阻塞主线程中的 GUI 响应[^2]。 ```python class Worker(QThread): finished = pyqtSignal() def run(self): # Simulate a long-running task. for i in range(5): time.sleep(1) print(f"Task progress: {i}") self.finished.emit() ``` #### 3. 设计图形化界面并加载 UI 文件 可以借助 Qt Designer 工具快速构建复杂的用户界面,并保存为 `.ui` 文件形式。之后利用 `uic.loadUi()` 方法动态加载这些预设好的布局结构[^3]。 ```python import sys from PyQt5 import uic from PyQt5.QtWidgets import QApplication FormClass = uic.loadUiType("path_to_your_ui_file.ui")[0] class MainWindow(QMainWindow, FormClass): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 以上展示了如何合理组织 PyQt5 应用程序内的各个部分,从而达到高效开发的目的。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值