详解PyQt5中textBrowser显示print语句输出的简单方法


Posted in Python onAugust 07, 2020

开发python程序处理大数据量的时候,少不了使用print语句看看输出结果;长时间处理数据时用print输出处理进展情况。使用PyQt5开发了UI界面后,本能地想让已自己调试好的py代码中的print输出到UI的textBrowser中显示出来。在CSDN上查了不少结果,一般都是使用多线程。我对多线程研究不多,就采用了变通办法,效果还挺好。

在Ui界面程序(Ui_startaml.py)中设置textBrowser用于显示程序输出信息,并自己定义代码(def printf ),以后将.py程序中凡是用print的地方改用ui.printf()调用就OK.

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

# Form implementation generated from reading ui file 'D:\aml\startaml.ui'
# Created by: PyQt5 UI code generator 5.11.3
# 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.setEnabled(True)
    MainWindow.resize(490, 390)
    MainWindow.setMaximumSize(QtCore.QSize(490, 390))
    font = QtGui.QFont()
    #.......
    #........中间自动生成代码省去....
    #........
    self.textBrowser = QtWidgets.QTextBrowser(self.centralWidget)
    self.textBrowser.setGeometry(QtCore.QRect(10, 109, 471, 221))
    self.textBrowser.setMaximumSize(QtCore.QSize(16777215, 16777215))
    font = QtGui.QFont()
    font.setFamily("宋体")
    self.textBrowser.setFont(font)
    self.textBrowser.setObjectName("textBrowser")
    #..........其它语句

 def printf(self,mypstr):
   ###
   自定义类print函数,借用c语言 printf 
   Mypstr:是待显示的字符串
   ###
  self.textBrowser.append(mypstr)  #在指定的区域显示提示信息
  self.cursor=self.tetxBrowser.textCursor()
  self.tetxBrowser.moveCursor(self.cursor.End) #光标移到最后,这样就会自动显示出来
  QtWidgets.QApplication.processEvents() #一定加上这个功能,不然有卡顿

其它py程序如何去调用class Ui_MainWindow(object) 类呢,比如:

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

"""
Module implementing MainWindow.
这是ui界面主程序,它将调用已调试成功的.py程序。如runget.py
"""
from PyQt5 import QtWidgets
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow
from Ui_startaml import Ui_MainWindow
import sys
sys.path.append('src')
from runget import run_get  #单独调试成功代码,可将正常print语句稍加改造


class MainWindow(QMainWindow, Ui_MainWindow):
  """
  Class documentation goes here.
  """
  def __init__(self, parent=None):
    """
    Constructor
    @param parent reference to the parent widget
    @type QWidget
    """
    super(MainWindow,self).__init__(parent)
    self.setupUi(self)
    self.graphicsPsw.mousePressEvent=self.chpsw_clicked #点mouse调用改密码功能。
    
  def chpsw_clicked(self, e):
    """
    change psw
    """
    print('change psw record')
 
  def _runget(self,ui):  #此处调用单独开发的py代码。
    run_get(ui)  #是 runget.py 中主程序的入口方法。

  @pyqtSlot()
  def on_pushBut_get_clicked(self):
    """
    Slot documentation goes here.
    这是槽函数,调用事先开发好的模块
    """
    # TODO: not implemented yet
    self.printf("\n自动捕获信息分析数据,您等着瞧!")
    self._runget(ui)   #传入ui实例是关键
  # ...........省略非相关代码.....

if __name__ == "__main__":
#这是Ui界面主程序,注意ui这个实例化对象,就OK了
  app = QtWidgets.QApplication(sys.argv)
  app.aboutToQuit.connect(app.deleteLater)
  ui = MainWindow()
  ui.show()
  sys.exit(app.exec_())

run_get(ui)是单独的调试成功的runget.py程序中的主入口,简化如下:

#!C:\\Anaconda3\\python.exe
# -*- coding: utf-8 -*-
runget.py 
"""
Created on Wed Mar 13 15:32:50 2019
@author: yuce_hz 2019年3月11日,runget.py
""""
import re
import os
import time
import requests
from requests.exceptions import RequestException
from lxml import etree
#..........
#......省略无关代码....
#........
def run_get(ui):
  #1全局变量,并打开设置
  glob_var_chrome() #
  #2.联网
  if (login_nsso(gl_url,gl_user,gl_pass)!='OK'):
    #print("登录系统不成功,无法进行下去,检查网络正常后,可再运行。") #这是正常的print代码
    ui.printf("登录系统不成功,无法进行下去,检查网络正常后,可再运行。"  #这是知适应ui界面输出的printf
    browser.quit()
    
     #............简化代码.........
     #.....................

if __name__=='__main__':
  run_get()  #单独运行的调用时不用传ui参数, run_get(ui),是应对UI界面来调用的。

到此这篇关于详解PyQt5中textBrowser显示print语句输出的简单方法的文章就介绍到这了,更多相关PyQt5 textBrowser显示print内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
python处理二进制数据的方法
Jun 03 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
python的time模块和datetime模块实例解析
Nov 29 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
解决python 输出到csv 出现多空行的情况
Mar 24 Python
PyQt5的相对布局管理的实现
Aug 07 #Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 #Python
Python configparser模块封装及构造配置文件
Aug 07 #Python
Python logging模块进行封装实现原理解析
Aug 07 #Python
Python定时任务APScheduler安装及使用解析
Aug 07 #Python
Python如何解除一个装饰器
Aug 07 #Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 #Python
You might like
php获取apk包信息的方法
2014/08/15 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
python解析xml文件操作实例
2014/10/05 Python
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
python 网络爬虫初级实现代码
2016/02/27 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
django的ORM操作 增加和查询
2019/07/26 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
最热门的自我评价
2013/12/30 职场文书
好军嫂事迹材料
2014/01/15 职场文书
机关财务管理制度
2014/01/17 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
股权转让意向书
2014/04/01 职场文书
霸气队列口号
2014/06/18 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
2014年副班长工作总结
2014/12/10 职场文书
2015年端午节活动总结
2015/02/11 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
《将心比心》教学反思
2016/02/23 职场文书
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏
德生2P3收音机开箱评测
2022/04/30 无线电