gpt4 book ai didi

python - 将 Python 控制台输出打印到 Qtextedit

转载 作者:行者123 更新时间:2023-12-04 00:35:10 25 4
gpt4 key购买 nike

当我按下按钮时,我有这样的输出:

['VERSION', 'ROMMON', 'HOSTNAME', 'UPTIME', 'RUNNING_IMAGE','HARDWARE', 'SERIAL', 'CONFIG_REGISTER']

['12.2(55)SE7', 'Bootstrap', 'Revo-Solusindo-01', '1 hour, 27minutes', 'c2960s-universalk9-mz.122-55.SE7.bin',['WS-C2960S-24PD-L'], ['FOC1644Z129'], '0xF'] Write 1 records

['FAN', 'TEMPERATURE', 'TEMPERATURE_VALUE', 'TEMPERATURE_STATE','YELLOW_THRESHOLD', 'RED_THRESHOLD', 'POWER', 'RPS']

['OK', 'OK', '33', 'GREEN', '54', '64', '', ''] Write 1 records

['TOTAL', 'FFREE']

['57931776', '29178368']

['524288', '523212'] Write 2 records

['MEMTYPE', 'HEAD', 'TOTAL', 'USED', 'FREE', 'LOW', 'LARGE']

['Processor', '2BA9598', '73910760', '26908308', '47002452','45367928', '30211716']

[' I/O', '6200000', '14680064', '12406764', '2273300', '2273300','2273024']

['Driver te', '1A00000', '1048576', '44', '1048532', '1048532','1048532'] Write 3 records

['CPU_5_SEC', 'CPU_1_MIN', 'CPU_5_MIN']

['10', '10', '9'] Write 1 records

如何将后台进程的输出打印到 Qtextedit?

我的代码:

import sys
from PyQt4 import QtGui, QtCore
import jtextfsm as textfsm

class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("PyQT tuts!")
self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
self.home()

def home(self):
btn = QtGui.QPushButton("Generate", self)
btn.clicked.connect(self.TextFSM)
btn.resize(100, 50)
btn.move(50, 50)

process = QtGui.QTextEdit(self)
process.moveCursor(QtGui.QTextCursor.Start)
process.ensureCursorVisible()
process.setLineWrapColumnOrWidth(500)
process.setLineWrapMode(QtGui.QTextEdit.FixedPixelWidth)
process.setFixedWidth(400)
process.setFixedHeight(150)
process.move(50,100)

self.show()

def TextFSM(self):

nameFile = 'Switch'

try:
input_file = open(nameFile + '.txt', encoding='utf-8') # show version
raw_text_data = input_file.read()
input_file.close()

input_file2 = open(nameFile + '.txt', encoding='utf-8') # show env
raw_text_data2 = input_file2.read()
input_file2.close()

input_file3 = open(nameFile + '.txt', encoding='utf-8') # show flash
raw_text_data3 = input_file3.read()
input_file3.close()

input_file4 = open(nameFile + '.txt', encoding='utf-8') # show memory statistic
raw_text_data4 = input_file4.read()
input_file4.close()

input_file5 = open(nameFile + '.txt', encoding='utf-8') # show process cpu
raw_text_data5 = input_file5.read()
input_file5.close()

template = open("show-version.textfsm") # show version
re_table = textfsm.TextFSM(template)
fsm_results = re_table.ParseText(raw_text_data)

template2 = open("show-env.textfsm") # show env
re_table2 = textfsm.TextFSM(template2)
fsm_results2 = re_table2.ParseText(raw_text_data2)

template3 = open("show-flash.textfsm") # show flash
re_table3 = textfsm.TextFSM(template3)
fsm_results3 = re_table3.ParseText(raw_text_data3)

template4 = open("show-memory-statistic.textfsm") # show memory statistic
re_table4 = textfsm.TextFSM(template4)
fsm_results4 = re_table4.ParseText(raw_text_data4)

template5 = open("show-process-cpu.textfsm") # show process cpu
re_table5 = textfsm.TextFSM(template5)
fsm_results5 = re_table5.ParseText(raw_text_data5)

outfile_name = open(nameFile + "-show-version.csv", "w+") # show version
outfile = outfile_name

outfile_name2 = open(nameFile + "-show-env.csv", "w+") # show env
outfile2 = outfile_name2

outfile_name3 = open(nameFile + "-show-flash.csv", "w+") # show flash
outfile3 = outfile_name3

outfile_name4 = open(nameFile + "-show-memory-statistic.csv", "w+") # show memory statistic
outfile4 = outfile_name4

outfile_name5 = open(nameFile + "-show-process-cpu.csv", "w+") # show process cpu
outfile5 = outfile_name5

print(re_table.header) # show version
for s in re_table.header:
outfile.write("%s;" % s)
outfile.write("\n")

counter = 0
for row in fsm_results: # show version
print(row)
for s in row:
outfile.write("%s;" % s)
outfile.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table2.header) # show env
for s in re_table2.header:
outfile2.write("%s;" % s)
outfile2.write("\n")

counter = 0
for row in fsm_results2: # show env
print(row)
for s in row:
outfile2.write("%s;" % s)
outfile2.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table3.header) # show flash
for s in re_table3.header:
outfile3.write("%s;" % s)
outfile3.write("\n")

counter = 0
for row in fsm_results3: # show flash
print(row)
for s in row:
outfile3.write("%s;" % s)
outfile3.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table4.header) # show memory statistics
for s in re_table4.header:
outfile4.write("%s;" % s)
outfile4.write("\n")

counter = 0
for row in fsm_results4: # show memory statistics
print(row)
for s in row:
outfile4.write("%s;" % s)
outfile4.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table5.header) # show process cpu
for s in re_table5.header:
outfile5.write("%s;" % s)
outfile5.write("\n")

counter = 0
for row in fsm_results5: # show process cpu
print(row)
for s in row:
outfile5.write("%s;" % s)
outfile5.write("\n")
counter += 1
print("Write %d records" % counter)
except IOError:
print("Error: There Have File does not appear to exist.")
QtGui.QMessageBox.question(self, 'Warning', "ERROR:Please check you're '.txt' file and TextFSM File.")


def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())


run()

最佳答案

Python产生的输出控制台写入程序输出流sys.stdout(正常输出)和sys.stderr(错误输出,如异常回溯)。在这种情况下,我们将使用标准输出

class Stream(QtCore.QObject):
newText = QtCore.pyqtSignal(str)

def write(self, text):
self.newText.emit(str(text))

class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("PyQT tuts!")
self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
self.home()

sys.stdout = Stream(newText=self.onUpdateText)

def onUpdateText(self, text):
cursor = self.process.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.process.setTextCursor(cursor)
self.process.ensureCursorVisible()

def __del__(self):
sys.stdout = sys.__stdout__

完整代码:

import sys
from PyQt4 import QtGui, QtCore
import jtextfsm as textfsm


class Stream(QtCore.QObject):
newText = QtCore.pyqtSignal(str)

def write(self, text):
self.newText.emit(str(text))

class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("PyQT tuts!")
self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
self.home()

sys.stdout = Stream(newText=self.onUpdateText)

def onUpdateText(self, text):
cursor = self.process.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.process.setTextCursor(cursor)
self.process.ensureCursorVisible()

def __del__(self):
sys.stdout = sys.__stdout__

def home(self):

w = QtGui.QWidget()
self.setCentralWidget(w)
lay = QtGui.QVBoxLayout(w)
btn = QtGui.QPushButton("Generate")
btn.clicked.connect(self.TextFSM)

self.process = QtGui.QTextEdit()
self.process.moveCursor(QtGui.QTextCursor.Start)
self.process.ensureCursorVisible()
self.process.setLineWrapColumnOrWidth(500)
self.process.setLineWrapMode(QtGui.QTextEdit.FixedPixelWidth)

lay.addWidget(btn)
lay.addWidget(self.process)

self.show()

def TextFSM(self):

nameFile = 'Switch'

try:
input_file = open(nameFile + '.txt', encoding='utf-8') # show version
raw_text_data = input_file.read()
input_file.close()

input_file2 = open(nameFile + '.txt', encoding='utf-8') # show env
raw_text_data2 = input_file2.read()
input_file2.close()

input_file3 = open(nameFile + '.txt', encoding='utf-8') # show flash
raw_text_data3 = input_file3.read()
input_file3.close()

input_file4 = open(nameFile + '.txt', encoding='utf-8') # show memory statistic
raw_text_data4 = input_file4.read()
input_file4.close()

input_file5 = open(nameFile + '.txt', encoding='utf-8') # show process cpu
raw_text_data5 = input_file5.read()
input_file5.close()

template = open("show-version.textfsm") # show version
re_table = textfsm.TextFSM(template)
fsm_results = re_table.ParseText(raw_text_data)

template2 = open("show-env.textfsm") # show env
re_table2 = textfsm.TextFSM(template2)
fsm_results2 = re_table2.ParseText(raw_text_data2)

template3 = open("show-flash.textfsm") # show flash
re_table3 = textfsm.TextFSM(template3)
fsm_results3 = re_table3.ParseText(raw_text_data3)

template4 = open("show-memory-statistic.textfsm") # show memory statistic
re_table4 = textfsm.TextFSM(template4)
fsm_results4 = re_table4.ParseText(raw_text_data4)

template5 = open("show-process-cpu.textfsm") # show process cpu
re_table5 = textfsm.TextFSM(template5)
fsm_results5 = re_table5.ParseText(raw_text_data5)

outfile_name = open(nameFile + "-show-version.csv", "w+") # show version
outfile = outfile_name

outfile_name2 = open(nameFile + "-show-env.csv", "w+") # show env
outfile2 = outfile_name2

outfile_name3 = open(nameFile + "-show-flash.csv", "w+") # show flash
outfile3 = outfile_name3

outfile_name4 = open(nameFile + "-show-memory-statistic.csv", "w+") # show memory statistic
outfile4 = outfile_name4

outfile_name5 = open(nameFile + "-show-process-cpu.csv", "w+") # show process cpu
outfile5 = outfile_name5

print(re_table.header) # show version
for s in re_table.header:
outfile.write("%s;" % s)
outfile.write("\n")

counter = 0
for row in fsm_results: # show version
print(row)
for s in row:
outfile.write("%s;" % s)
outfile.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table2.header) # show env
for s in re_table2.header:
outfile2.write("%s;" % s)
outfile2.write("\n")

counter = 0
for row in fsm_results2: # show env
print(row)
for s in row:
outfile2.write("%s;" % s)
outfile2.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table3.header) # show flash
for s in re_table3.header:
outfile3.write("%s;" % s)
outfile3.write("\n")

counter = 0
for row in fsm_results3: # show flash
print(row)
for s in row:
outfile3.write("%s;" % s)
outfile3.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table4.header) # show memory statistics
for s in re_table4.header:
outfile4.write("%s;" % s)
outfile4.write("\n")

counter = 0
for row in fsm_results4: # show memory statistics
print(row)
for s in row:
outfile4.write("%s;" % s)
outfile4.write("\n")
counter += 1
print("Write %d records" % counter)

print(re_table5.header) # show process cpu
for s in re_table5.header:
outfile5.write("%s;" % s)
outfile5.write("\n")

counter = 0
for row in fsm_results5: # show process cpu
print(row)
for s in row:
outfile5.write("%s;" % s)
outfile5.write("\n")
counter += 1
print("Write %d records" % counter)
except IOError:
print("Error: There Have File does not appear to exist.")
QtGui.QMessageBox.question(self, 'Warning', "ERROR:Please check you're '.txt' file and TextFSM File.")


def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())


run()

截图:

enter image description here

关于python - 将 Python 控制台输出打印到 Qtextedit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44432276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com