Python PyQt5运行程序把输出信息展示到GUI图形界面上

概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题。

先演示一下效果最终效果吧,下面两张图用来镇楼。可以看到我们图形界面和程序运行的返回的信息是一样的,并且成功把数据展示到图形界面。

  1.怎么获取输出信息。eg:我们平时用编译器,例如pycharm,运行的时候,会有很多信息,或者直接在cmd窗口输入命令的时候,也有同样信息。例如我启动数据库。

cmd窗口下执行命令返回的信息

Pycharm运行的效果

我就想把这种类似输出的信息,展示到图形界面上,上面这两种方法本质都是一样的,都是在向用mysql 命令net start mysql启动的,前面是在cmd窗口下,后一种是用os.sysytem("net start mysql")。

2.怎么把信息发送给图形界面展示。

解决方案:

对于问题1,需要用到PyQt其中一个模块 :subprocess。看名字大概可以猜到是新开一个进程去执行某些功能。由于我是结合网上资料和源码进行运用的, 大概简单说一些吧。

官方源码中这么说的:

This module allows you to spawn processes, connect to their
input/output/error pipes, and obtain their return codes.

翻译过来就是:该模块允许您生成进程,连接到其输入/输出/错误管道  并获取其返回码。

意思就是新开一个进程去执行功能,返回状态码,以及信息。这里要想像cmd里面或者pycharm运行那样,得到里面的输出数据,就要用到subprocess.Popen(cmd),或者subprocess.getstatusoutpu(cmd),subprocess.getoutpu(cmd)。都能获取到输出的日志信息,cmd是字符串命令。博主这里用的subprocess.get系列。就实例话展示一下。

subprocess.getoutput(cmd):返回的是在Linux shell或者windows cmd窗口执行命令返回信息。例如启动数据库。

import subprocess

reply=subprocess.getstatusoutput("net start mysql")
print(reply)

对于上面两种情况,如果你需要状态码和信息就用第二种,只需要返回信息就用第一种。博主用的第二种,因为我需要状态码判断是否成功,因为我的图形界面有消息盒子需要判断。当然你可以根据个人情况而定。

对于问题2:我这里采用是Pyqt中的信号机制,我把所有信息用信号发送出去,在用信号函数接收,连接槽函数再显示,因为我的功能比较多,所以需要显示的数据,都用信号发出去。当然你的功能单一的话,你可以直接用上面的模块,得到返回信息显示就行。比如我这里,有测试功能,连接数据库,关闭数据库等,我就展示其中一个具体的例子演示。

首先得在一个类中定义信号   eg:show_infoes_signal=pyqtSignal(str)  str是参数

#自定义信号,发送日志信息,展示到界面
 show_infoes_signal=pyqtSignal(str)

在类中init初始化中写接收信号,连接槽函数。show_infoes是写的展示函数

def __init__(self):

  self.show_infoes_signal.connect(self.show_infoes)

比如在某个具体功能中发送信号,并把信息用哪个信号传出去。例如我的连接数据库的功能。

def connect_mysql(self):
  self.show_infoes_signal.emit("连接数据库ing....")
  reply=subprocess.getstatusoutput("net start mysql")
  #subprocess返回状态码和字符串元组,0成功,其余值失败
  if reply[0]==0:
   # 发送数据信号
   self.show_infoes_signal.emit(reply[-1])
   QMessageBox.information(self, "消息", "Congratulation! 数据库连接成功!")
  else:
   self.show_infoes_signal.emit(reply[-1])
   QMessageBox.warning(self, "警告", "连接失败")

在连接数据库功能中,用新进程打开,看状态码是否为0,为0启动成功,发送信号并且消息盒子提示连接成功,否则连接失败。

最后就是展示的槽函数。当我们发送信号后,就能接收到发送的信号以及信息,最后把拿到的信息进行展示。

 #展示信息槽函数
 def show_infoes(self,info):
  print(info)
  pre_text=self.show_label.text()
  self.show_label.setText(pre_text+info+'\n\n')

到此这篇关于Python PyQt5运行程序把输出信息展示到GUI图形界面上的文章就介绍到这了,更多相关Python PyQt5运行程序GUI图形界面内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例

    在默认情况下,我们使用PyQt5创建出来的窗口和部件都是默认的样式,虽然谈不上很丑,但是也毫无美感可言.其实,在PyQt5中,我们可以有较高的自由度来自定义窗口和各种小部件的样式,通过自定义这些样式,以达到美化图形界面的目的. 本篇文章中,我们就通过一个实际的例子,使用QSS和PyQt5的配置属性,实现图形用户界面的美化工作. 首先上效果图: 一.对界面进行布局和组件的布置 在图像界面编程中,一个好的布局有助于全局把控界面的形态,而在PyQt5中,有多种布局的方式供我们选择,比较常用的布局有以下

  • python GUI库图形界面开发之PyQt5线程类QThread详细使用方法

    QThread是Qt的线程类中最核心的底层类.由于PyQt的的跨平台特性,QThread要隐藏所有与平台相关的代码 要使用的QThread开始一个线程,可以创建它的一个子类,然后覆盖其它QThread.run()函数 class Thread(QThread): def __init __(self): super(Thread,self).__ init __() def run(self): #线程相关的代码 pass 接下来创建一个新的线程 thread = Thread() thread

  • python3+PyQt5实现支持多线程的页面索引器应用程序

    本文通过Python3+pyqt5实现了python Qt GUI 快速编程的19章的页面索引器应用程序例子. /home/yrd/eric_workspace/chap19/walker_ans.py #!/usr/bin/env python3 import codecs import html.entities import re import sys from PyQt5.QtCore import (QMutex, QThread,pyqtSignal,Qt) class Walker

  • python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性

    QTableWidget介绍 QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid.QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使用QTableWidget时就需要QTableWidgetItem.用来表示表格中的一个单元格,整个表格就是用各个单元格构建起来的 QTableWidget类中的常用方法 方法 描述 setROwCount(int row) 设置Q

  • python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序

    本文通过Python3+PyQt5实现<python Qt Gui 快速编程>这本书的page Designer应用程序,采用QGraphicsView,QGraphicsScene,QGraphicsItem,这个程序包含有多个文本,图片和框的页面.有些图形类在PyQt5已过时,所以本代码改动幅度比较大.主要的类或方法的改变如下: QMatrix==>QTransform setMatrix==>setTransform rotate ==> setRotation 本例中

  • python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例

    窗口背景主要包括,背景色与背景图片,设置窗口背景有三种方法 使用QSS设置窗口背景 使用QPalette设置窗口背景 实现PainEvent,使用QPainter绘制背景 QSS设置窗口背景 在QSS中,我们可以使用Background或者background-color的方式来设置背景色,设置窗口背景色之后,子控件默认会继承父窗口的背景色,如果想要为控件设置背景图片或图标,则可以使用setPixmap或则setIcon来完成.关于这两个函数的用法,可以参考本博客下的PyQt5的基础控件分栏 实

  • python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法

    PyQt5浏览器控件QWebEngineView PyQt5使用QWebEngineView控件来展示HTML页面,对老版本的QWebView类不在进行维护,因为QWebEngineView使用CHromium内核可以给用户带来更好的体验 QWebEngineView类中常用方法 方法 描述 load(QUrl url) 加载指定的URL并显示 setHtml(QString&html) 将网页视图的内容设置为指定的HTML内容 QWebEngineView控件使用load()函数加载一个Web

  • Python PyQt5运行程序把输出信息展示到GUI图形界面上

    概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题. 先演示一下效果最终效果吧,下面两张图用来镇楼.可以看到我们图形界面和程序运行的返回的信息是一样的,并且成功把数据展示到图形界面.   1.怎么获取输出信息.eg:我们平时用编译器,例如pycharm,运行的时候,会有很多信息,或者直接在cmd窗口输入命令的时候,也有同样信息.例如我启动数据库. cmd窗口下执行命令返回的信息 Pycharm运行的效果 我就想把这种类似输出

  • Visual Studio Code运行程序时输出中文成乱码问题及解决方法

    今天写代码,需要输出一些中文,于是就顺势发现了这个问题:VS Code输出中文成乱码.上网查询了一番后,我找到了解决方法,我决定将我看到的方法整理出来,帮助更多朋友.(windows10系统下) 1. 打开控制面板 可以点击电脑桌面上的相应图标打开 也可以点击桌面左下角开始按钮,找到W开头文件列表下的windows系统文件夹中的控制面板 2.选择时钟和区域下的更改日期.时间或数字格式 3.点击管理,然后点选择更改系统区域设置 4. 勾选Beta版:使用Unicode UTF-8提供全球语言支持,

  • 基于Python+Pyqt5开发一个应用程序

    介绍你的那个她/他 1. UI -MainWindow设计界面及代码 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file '/media/sf_data/onemore_tjj/Again_tjj/MainWindow.ui' # # Created by: PyQt5 UI code generator 5.14.1 # # WARNING! All changes made in this

  • Python 获取异常(Exception)信息的几种方法

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种 Python 中获取异常信息的方法,这里获取异常(Exception)信息采用 try-except- 程序结构. 如下所示: try: print(x) except Exception as e: print(e) 1. str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如: try: print(x) except Exception as e: print(str(e)) 打印结

  • PyQt5爬取12306车票信息程序的实现

    1.搭载QT环境 按win+R输入 pip install pyqt5 下载QT5 当然也可以去Qt的官网的下载 ,使用命令行更快捷方便 所以建议使用命令行 ,去官网下载安装有它的好处就是不用自己安装 toosl 作者使用的是pyCharm 完成后期的后台程序设置,使用pyCharm 外部工具链接把Designer,pyUIC,qrcTopy程序加进去 2.主窗体设置 打Qt5主程序设置主窗体,设计完成保存为windows 添加到创建好的python项目中,然后选中单击右键->External

  • go和python调用其它程序并得到程序输出

    在c语言中可以用system函数调用系统命令并得到输出,通过输出重定向也可以将程序执行的输出保存到文件以供使用,但用起来不是很方便.我这里介绍下用python和go语言的实现方式,可以将其它程序的输出直接保存成变量供程序使用. 下面的示例用的是ls命名,需要安装MinGW,并将"C:\MinGW\msys\1.0\bin"加入环境变量. 一.用python调用其它程序,并得到输出 示例代码: 复制代码 代码如下: import osvar = os.popen('ls -l').rea

  • 将python文件打包exe独立运行程序方法详解

    首先需要安装pyinstaller库. pip install pyinstaller exe程序打包步骤 cmd 进入要编译的python文件所在的文件夹, 然后 pyinstaller -F hello.py hello.py就是我要打包的文件. 常用参数: -F 生成单个的exe文件. -w 隐藏运行窗口. -h 可以查看帮助信息,更多指令可以通过这个查看. 最开始 D:\pyinstaller 目录下只有hello.py这一个文件,其它的文件都是后生成的. 生成的exe文件在dist里,

  • 云服务器使用宝塔搭建Python环境,运行django程序

    目录 安装宝塔 配置 Python 运行环境 安装 Python 配置 django 环境 安装模块 nginx 反向代理 本篇博客主要内容为 介绍 阿里云服务器(CentOS) 搭建 Django 程序. 在正式开始之前,你需要有一台服务器. 安装宝塔 宝塔官网:https://www.bt.cn/ 如果使用的是 CentOS 系统,使用下述命令安装即可. yum install -y wget && wget -O install.sh http://download.bt.cn/in

  • Python实现运行其他程序的四种方式实例分析

    本文实例讲述了Python实现运行其他程序的四种方式.分享给大家供大家参考,具体如下: 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32process模块中的函数,如果想进一步控制进程,则可以使用ctype模块,直接调用kernel32.dll中的函数. [方式一]使用os.system()函数运行其他程序 os模块中的system()函数可以方便地运行

  • python简单程序读取串口信息的方法

    本文实例讲述了python简单程序读取串口信息的方法.分享给大家供大家参考.具体分析如下: 这段代码需要调用serial模块,通过while循环不断读取串口数据 import time import serial ser = serial.Serial( #下面这些参数根据情况修改 port='COM1', baudrate=9600, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO, bytesize=serial.SEVENBIT

随机推荐