国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python PyQt5運行程序把輸出信息展示到GUI圖形界面上

瀏覽:4日期:2022-07-27 11:26:30

概述:最近在趕畢業設計,遇到一個問題,爬蟲模塊我用PyQt5寫了圖形界面,為了將所有的輸出信息都顯示到圖形界面上遇到了問題。

先演示一下效果最終效果吧,下面兩張圖用來鎮樓。可以看到我們圖形界面和程序運行的返回的信息是一樣的,并且成功把數據展示到圖形界面。

Python PyQt5運行程序把輸出信息展示到GUI圖形界面上

Python PyQt5運行程序把輸出信息展示到GUI圖形界面上

1.怎么獲取輸出信息。eg:我們平時用編譯器,例如pycharm,運行的時候,會有很多信息,或者直接在cmd窗口輸入命令的時候,也有同樣信息。例如我啟動數據庫。

Python PyQt5運行程序把輸出信息展示到GUI圖形界面上

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

Python PyQt5運行程序把輸出信息展示到GUI圖形界面上

Pycharm運行的效果

我就想把這種類似輸出的信息,展示到圖形界面上,上面這兩種方法本質都是一樣的,都是在向用mysql 命令net start mysql啟動的,前面是在cmd窗口下,后一種是用os.sysytem('net start mysql')。

2.怎么把信息發送給圖形界面展示。

解決方案:

對于問題1,需要用到PyQt其中一個模塊 :subprocess。看名字大概可以猜到是新開一個進程去執行某些功能。由于我是結合網上資料和源碼進行運用的, 大概簡單說一些吧。

官方源碼中這么說的:

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

翻譯過來就是:該模塊允許您生成進程,連接到其輸入/輸出/錯誤管道 并獲取其返回碼。

意思就是新開一個進程去執行功能,返回狀態碼,以及信息。這里要想像cmd里面或者pycharm運行那樣,得到里面的輸出數據,就要用到subprocess.Popen(cmd),或者subprocess.getstatusoutpu(cmd),subprocess.getoutpu(cmd)。都能獲取到輸出的日志信息,cmd是字符串命令。博主這里用的subprocess.get系列。就實例話展示一下。

Python PyQt5運行程序把輸出信息展示到GUI圖形界面上

subprocess.getoutput(cmd):返回的是在Linux shell或者windows cmd窗口執行命令返回信息。例如啟動數據庫。

import subprocess reply=subprocess.getstatusoutput('net start mysql')print(reply)

Python PyQt5運行程序把輸出信息展示到GUI圖形界面上

對于上面兩種情況,如果你需要狀態碼和信息就用第二種,只需要返回信息就用第一種。博主用的第二種,因為我需要狀態碼判斷是否成功,因為我的圖形界面有消息盒子需要判斷。當然你可以根據個人情況而定。

對于問題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+’nn’)

到此這篇關于Python PyQt5運行程序把輸出信息展示到GUI圖形界面上的文章就介紹到這了,更多相關Python PyQt5運行程序GUI圖形界面內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲在线免费免费观看视频 | 成人午夜天 | 香蕉一区二区三区观 | 性欧美高清久久久久久久 | 久草在线视频首页 | 日韩免费观看的一级毛片 | 202z欧美成人 | 国产自偷自拍 | 久久久久久久久国产 | 亚洲精品综合欧美一区二区三区 | 华人色| 亚洲在线看片 | 久久99久久精品免费思思6 | 免费国产成人α片 | 99久久精品国产自免费 | 久久香蕉国产精品一区二区三 | 国产亚洲欧美日韩在线观看不卡 | 国产精品久久久久久久福利院 | 曰本aaaaa毛片午夜网站 | 日本免费久久 | 日本性色| 久草视频在线免费播放 | 一级一级一片免费 | 欧美日韩在线播一区二区三区 | 久久亚洲国产欧洲精品一 | 亚洲天天在线 | 99国产精品九九视频免费看 | 亚洲爽妇网 | 精品国产品欧美日产在线 | 国产午夜毛片一区二区三区 | 免费一级大片 | 成人在线午夜 | 在线亚洲精品中文字幕美乳 | 国产玖玖视频 | 久久草在线免费 | 国产精品亚洲片在线观看不卡 | 午夜香蕉成视频人网站高清版 | 久久亚洲精品成人综合 | 天天se天天cao综合网蜜芽 | 欧洲一级片 | 国产网站在线看 |