1
사용자 지정 출력 스트림을 만들었습니다. 도움말을 통해 출력을 파이썬 QT 텍스트 편집기로 리디렉션하고 있지만 텍스트 편집은 리디렉션 된 모든 출력을 보여줍니다. 한 번에 마지막 줄만 표시하는 방법이 있는지 알고 싶습니다. 예를 들어 1에서 99까지 시작하는 for 루프의 데이터를 보여줍니다. 텍스트 편집은 1에서 99까지의 모든 반복 데이터를 표시합니다. 나는 그것이 마지막 줄만 보여 주길 원합니다. 즉 2 세가 될 수도 있고 3 세일 수도 있고 99 세까지있을 수도 있습니다.Python 리디렉션 및 pyQt 위젯의 마지막 줄만 표시
참조하십시오 아래의 예제 코드 : 사전에
import sys
import os
from PyQt4 import QtGui,QtCore
from threading import Thread
class EmittingStream(QtCore.QObject):
textWritten = QtCore.pyqtSignal(str)
def write(self, text):
self.textWritten.emit(str(text))
class gui(QtGui.QMainWindow):
def __init__(self):
# ...
super(gui, self).__init__()
# Install the custom output stream
sys.stdout = EmittingStream(textWritten=self.normalOutputWritten)
self.initUI()
def __del__(self):
# Restore sys.stdout
sys.stdout = sys.__stdout__
def normalOutputWritten(self, text):
cursor = self.textEdit.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.textEdit.ensureCursorVisible()
def callProgram(self):
for i in range(1,100):
command="echo hi %s"%i
result=os.popen(str(command)).read()
print result
def initUI(self):
self.setGeometry(100,100,300,300)
self.show()
cmd=QtGui.QButtonGroup(self)
self.NoCmd=QtGui.QRadioButton("Best Quality",self)
self.NoCmd.setChecked(True)
self.runCommand = QtGui.QRadioButton("Quality Options",self)
cmd.addButton(self.NoCmd)
cmd.addButton(self.runCommand)
self.lineEdit=QtGui.QLineEdit(self)
self.textEdit=QtGui.QTextEdit(self)
self.textEdit.show()
self.textEdit.setGeometry(20,40,200,200)
self.lineEdit.move(200,0)
self.runCommand.move(100,0)
self.lineEdit.show()
self.NoCmd.show()
self.runCommand.show()
print "changing sys.out"
print "hello"
thread = Thread(target = self.callProgram)
thread.start()
#Function Main Start
def main():
app = QtGui.QApplication(sys.argv)
ui=gui()
sys.exit(app.exec_())
#Function Main END
if __name__ == '__main__':
main()
감사
이것은 다소 도움이되었습니다. 도움을 주셔서 감사합니다. –