c/c++语言开发共享详解PyQt5中textBrowser显示print语句输出的简单方法

开发python程序处理大数据量的时候,少不了使用print语句看看输出结果;长时间处理数据时用print输出处理进展情况。使用pyqt5开发了ui界面后,本能地想让已自己调试好的py代码中的prin

开发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:amlstartaml.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内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/598278.html

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐