程序:
from PyQt4 import QtCore
class EmittingStream(QtCore.QObject):
textWritten = QtCore.pyqtSignal(str)
def write(self, text):
self.textWritten.emit(str(text))
# Within your main window class...
def __init__(self, parent=None, **kwargs):
# ...
# Install the custom output stream
sys.stdout = EmittingStream(textWritten=self.normalOutputWritten)
def __del__(self):
# Restore sys.stdout
sys.stdout = sys.__stdout__
def normalOutputWritten(self, text):
"""Append text to the QTextEdit."""
# Maybe QTextEdit.append() works as well, but this is how I do it:
cursor = self.textEdit.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.textEdit.setTextCursor(cursor)
self.textEdit.ensureCursorVisible()
以上是关键代码
打印中文出现乱码,代码:
from PyQt4.QtCore import *
QTextCodec.setCodecForCStrings(QTextCodec.codecForName("utf-8"))
加上这两句就好了。
如果读数据库中文,则需要转码,否则会报错“
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”
解决方法:
在中文后加 .encode("utf-8")