概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用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图形界面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python执行结果在gui界面显示_Python PyQt5运行程序把输出信息展示到GUI图形界面上...相关推荐

  1. 在python集成开发环境中、可使用快捷键运行程序_在Python集成开发环境中,可使用快捷键 运行程序。_学小易找答案...

    [单选题]UFO默认报表模板不包括 [单选题]"取消结账"的快捷功能键组合为 [多选题]在UFO报表系统中,要想在表页上联查明细帐,需要具备哪些条件. [单选题]在UFO报表中,要 ...

  2. python偷回灭霸的宝石_Python+PyQt5实现灭霸响指功能

    之前给大家分享过灭霸命令GitHub地址:https://github.com/hotvulcan/Thanos.sh,本文使用Python+PyQt5实现灭霸响指,实现过程较简单,上效果图~ GUI ...

  3. python执行linux命令返回结果_python执行linux命令的简单示例

    对python执行linux命令的两种方法感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: ...

  4. cmd执行python 环境变量应该怎么写_python怎么运行py文件?.py文件cmd命令方法及环境变量配置教程...

    python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息.统计.网页制作.计算等多个领域都体现出了强大的功能.python和其他脚本语言如java.R ...

  5. python执行linux命令返回结果_Python中调用Linux命令并获取返回值

    方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256/512表示未找到,该方法适用于she ...

  6. python websocket django vue_Django资料 Vue实现网页前端实时反馈输出信息

    Django资料 Vue实现网页前端实时反馈输出信息 前言 功能实现:网也点击任务,页面实时返回执行的信息 本次的任务是执行本地的一个sh脚本 这个sh脚本就是每隔1S,输出一段文字 如果需要远程可以 ...

  7. python如何设计爬虫界面软件_Python+PyQt5设计B站视频数据爬虫小程序

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于菜J学Python ,作者J哥 前言 目前,市场上有大量 Python图形用户界面( ...

  8. python执行循环内存变大_python – 为什么我的循环在每次迭代时需要更多内存?...

    虽然脚本确实使用了相当多的内存,即使使用"较小"的示例值,答案也是如此 Does Python clone my entire environment each time the ...

  9. python执行原理是什么意思_Python程序的执行原理

    摘要:Python程序的执行原理是什么,下面这篇文章为你详细介绍. 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执 ...

最新文章

  1. ggplot2 调整绘图区域大小
  2. c语言100位整数乘法,很大的数相乘怎么办?
  3. Ajax应用查询员工信息
  4. 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
  5. 从技术平台到aPaaS平台
  6. Python回归 岭回归(Ridge Regression)
  7. 加载gif图片的方法:(需要SDWebImage方法)
  8. springboot(五) 加载配置文件优先级顺序
  9. inter uhd graphics630显卡驱动_极为全面的!从零开始的!小白都能看懂的!硬件科普#4 显卡选择篇...
  10. 小刘的编程学习技巧分享
  11. cvpr 2018 image caption generation论文导读(含workshop)
  12. GVIDO MUSIC向德意志唱片公司成立120周年 Special Gala Concert Presented by 小泽征尔 斋藤纪念管弦乐团提供赞助
  13. Sling CMS 学习:环境搭建(一)
  14. i711370h和i710875h哪个好
  15. 制作水晶报表基本步骤
  16. PyCharm下载和安装
  17. 电脑C盘满了有什么影响?如何正确清理C盘?
  18. html li spry,借助于spry实现Tab面板
  19. 关闭Linux防火墙
  20. 火狐浏览器自动加滚动条,如何去除?

热门文章

  1. Evaluation of Deep Learning Toolkits
  2. ustc小道消息20211229
  3. 科大星云诗社动态20210910
  4. 如何解决pip更新问题
  5. D8016“/ZI”和“/Gy-”命令行选项不兼容问题的解决
  6. Qt入门——三个臭皮匠顶个诸葛亮
  7. Win7下快速预览各种类型的文本文件
  8. 关于FillSchema与Fill
  9. c 语言常用宏定义 模板
  10. 在ubuntu上安装samba实现与windows的文件共享