ui文件中 sys.stdout.encoding = 'utf-8' AttributeError: attribute 'encoding' of '_io._TextIOBase' objects is not writable
时间: 2023-12-14 17:03:52 浏览: 148
这个错误是因为在 PyQt 中不能直接修改 sys.stdout.encoding 的属性。解决方法是将其重定向到一个 QTextEdit 组件,然后在 QTextEdit 中设置编码格式。可以使用以下代码实现:
```python
import sys
from PyQt5.QtWidgets import QTextEdit, QApplication
class StdoutTextEdit(QTextEdit):
def write(self, text):
self.insertPlainText(text)
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建一个 QTextEdit 组件
text_edit = StdoutTextEdit()
sys.stdout = text_edit
# 设置编码格式
text_edit.setPlainText("")
text_edit.setCurrentCharFormat(QtGui.QTextCharFormat())
text_edit.setFontPointSize(10)
text_edit.setFontFamily("Monospace")
text_edit.setTextColor(QtGui.QColor("white"))
text_edit.setStyleSheet("background-color: black;")
# 显示窗口
text_edit.show()
sys.exit(app.exec_())
```
这样,你就可以在 QTextEdit 组件中看到输出信息,并且设置了指定的编码格式。
阅读全文