假设ex1.py包含:
exec(open('ex2.py').read())
和ex2.py包含:
from PyQt5.QtWidgets import *
class HelloWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
self.x = "وه شه نی گیان" #some Unicode words
self.y = "قوربانه ت" #some Unicode words
self.setWindowTitle(self.x)
gridLayout = QGridLayout(self)
self.title = QLabel(self.y)
gridLayout.addWidget(self.title, 0, 0)
self.setLayout(gridLayout)
app = QApplication([])
mainWin = HelloWindow()
mainWin.resize(400,200)
mainWin.show()
app.exec_()
情况:Windows 7 64bit,python 3.7.4,pyqt 5.12.2
打开cmd并运行(python ex2.py)可以在标题和标签中正确显示Unicode文本,并且可以正常工作;但运行(python ex1.py)会破坏文本的编码。
使用kivy代替pyqt5会得到相同的结果。我相信这不是pyqt5的错误, 在Ubuntu 18中,以上两种方法都可以正常工作。
使用import而不是exec解决了问题,但我不希望那样,因为我必须在每个脚本文件中再次导入所有内容,并且我有很多。谁能告诉我如何克服这个问题? 预先谢谢你。
答案 0 :(得分:0)
exec(open('ex2.py', encoding='utf-8').read())