python pyqt5 cmd 命令行 控制台 打印 print 输出 显示打印内容 实时显示 界面

简介: python pyqt5 cmd 命令行 控制台 打印 print 输出 显示打印内容 实时显示 界面

学习参考链接:pyqt5实现---GUI界面实时显示控制台输出_跌跌撞撞进大坑的博客-CSDN博客_pyqt 输出控制台


 

from time import sleep
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import qtawesome
from PyQt5.QtCore import QObject, pyqtSignal, QEventLoop, QTimer, QThread, QTime
from PyQt5.QtGui import QTextCursor
from PyQt5.QtWidgets import QTextEdit
class MyThread(QThread):
    signalForText = pyqtSignal(str)
    def __init__(self,data=None, parent=None):
        super(MyThread, self).__init__(parent)
        self.data = data
    def write(self, text):
        self.signalForText.emit(str(text))  # 发射信号
    def run(self):
        # 演示代码
        for i in range(5):
            print(i)
            sleep(1)
        print("End")
class MainUi(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()
        self.th = MyThread()
        self.th.signalForText.connect(self.onUpdateText)
        sys.stdout = self.th
    def onUpdateText(self,text):
        cursor = self.process.textCursor()
        cursor.movePosition(QTextCursor.End)
        cursor.insertText(text)
        self.process.setTextCursor(cursor)
        self.process.ensureCursorVisible()
    def init_ui(self):
        self.setFixedSize(800, 400)
        self.main_widget = QtWidgets.QWidget()  # 创建窗口主部件
        self.main_layout = QtWidgets.QGridLayout()  # 创建主部件的网格布局
        self.main_widget.setLayout(self.main_layout)  # 设置窗口主部件布局为网格布局
        self.widget = QtWidgets.QWidget()  
        self.widget.setObjectName('widget')
        self.layout = QtWidgets.QGridLayout()
        self.widget.setLayout(self.layout)  # 设置部件布局为网格
        self.main_layout.addWidget(self.widget, 0, 2, 12, 10)  
        self.setCentralWidget(self.main_widget)  # 设置窗口主部件
        self.bar_widget = QtWidgets.QWidget()  # 顶部搜索框部件
        self.bar_layout = QtWidgets.QGridLayout()  # 顶部搜索框网格布局
        self.bar_widget.setLayout(self.bar_layout)
        self.search_button = QtWidgets.QPushButton(qtawesome.icon('fa.comment', color='red'), "搜索")
        self.search_button.clicked.connect(self.genMastClicked)
        self.search_button.setObjectName('button')
        self.search_button.setFont(qtawesome.font('fa', 16))
        self.bar_widget_search_input = QtWidgets.QLineEdit()  # 搜索框
        self.bar_widget_search_input.setPlaceholderText("输入搜索内容")
        self.bar_layout.addWidget(self.search_button, 0, 0, 1, 1)
        self.bar_layout.addWidget(self.bar_widget_search_input, 0, 1, 1, 8)
        self.layout.addWidget(self.bar_widget, 0, 0, 1, 9)
        self.recommend_label = QtWidgets.QLabel("进程显示:")
        self.recommend_label.setObjectName('lable')
        self.recommend_widget = QtWidgets.QWidget()
        self.recommend_layout = QtWidgets.QGridLayout()
        self.recommend_widget.setLayout(self.recommend_layout)
        self.process = QTextEdit(self, readOnly=True)
        self.process.ensureCursorVisible()
        self.process.setLineWrapColumnOrWidth(800)
        self.process.setLineWrapMode(QTextEdit.FixedPixelWidth)
        self.process.setFixedWidth(500)
        self.process.setFixedHeight(250)
        self.process.move(30, 50)
        self.recommend_layout.addWidget(self.process, 0, 1)
        self.layout.addWidget(self.recommend_label, 1, 0, 1, 9)
        self.layout.addWidget(self.recommend_widget, 2, 0, 2, 9)
        #使用QSS和部件属性美化窗口部件
        self.bar_widget_search_input.setStyleSheet(
            '''QLineEdit{
                    border:1px solid gray;
                    width:300px;
                    border-radius:10px;
                    padding:2px 4px;
            }''')
        self.widget.setStyleSheet('''
            QWidget#widget{
                color:#232C51;
                background:white;
                border-top:1px solid darkGray;
                border-bottom:1px solid darkGray;
                border-right:1px solid darkGray;
            }
            QLabel#lable{
                border:none;
                font-size:16px;
                font-weight:700;
                font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
            }
            QPushButton#button:hover{border-left:4px solid red;font-weight:700;}
        ''')
    def search(self):
        try:
            self.t = MyThread()
            self.t.start()
        except Exception as e:
            raise e
    def genMastClicked(self):
        """Runs the main function."""
        print('Running...')
        self.search()
        loop = QEventLoop()
        QTimer.singleShot(2000, loop.quit)
        loop.exec_()
    def closeEvent(self, event):
        """Shuts down application on close."""
        # Return stdout to defaults.
        sys.stdout = sys.__stdout__
        super().closeEvent(event)
def main():
    app = QtWidgets.QApplication(sys.argv)
    app.aboutToQuit.connect(app.deleteLater)
    gui = MainUi()
    gui.show()
    sys.exit(app.exec_())
if __name__ == '__main__':
    main()

 

目录
打赏
0
0
0
0
0
分享
相关文章
|
8月前
|
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
339 1
|
3月前
|
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
45 3
|
5月前
|
告别Print,使用IceCream进行高效的Python调试
本文将介绍**IceCream**库,这个专门用于调试的工具显著提升了调试效率,使整个过程更加系统化和规范化。
171 2
告别Print,使用IceCream进行高效的Python调试
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
295 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
507 13
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
202 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
393 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
基于Python后端构建多种不同的系统终端界面研究
【10月更文挑战第10天】本研究探讨了利用 Python 后端技术构建多样化系统终端界面的方法,涵盖命令行界面(CLI)、图形用户界面(GUI)及 Web 界面。通过分析各种界面的特点、适用场景及关键技术,展示了如何使用 Python 标准库和第三方库(如 `argparse`、`click`、`Tkinter` 和 `PyQt`)实现高效、灵活的界面设计。旨在提升用户体验并满足不同应用场景的需求。
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
724 2
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
359 2

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等