pyuic4正在生成具有SyntaxError的文件:NonASCII字符“\xff”

2024-04-24 11:07:32 发布

您现在位置:Python中文网/ 问答频道 /正文

注意:这不是通常的“为什么我的编码没有设置?”问题!

我有一个Qt ui文件,我正在使用以下命令将其转换为与PyQt4一起使用:

pyuic4 model_importer.ui > model_importer.py

它运行良好,但当我尝试将其作为模块导入,甚至作为脚本运行时,会失败,并出现以下错误:

File "C:\Users\j\projects\model_importer.py", line 1 SyntaxError: Non-ASCII character '\xff' in file C:\Users\j\model_importer.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

下面的代码(具有正确的编码)是pyuic4的输出,如果将其粘贴到一个新的文件中,则可以正常工作。我的原始文件是here。当文件完全为空时也会发生此错误,这会导致我认为文件本身存在某种损坏。在

有人能解释一下这个奇怪的错误吗?在

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '.\model_importer.ui'
#
# Created: Thu Mar 12 13:57:45 2015
#      by: PyQt4 UI code generator 4.10.2
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_ModelImporterDlg(object):
    def setupUi(self, ModelImporterDlg):
        ModelImporterDlg.setObjectName(_fromUtf8("ModelImporterDlg"))
        ModelImporterDlg.resize(722, 223)
        self.gridLayout_2 = QtGui.QGridLayout(ModelImporterDlg)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.buttonBox = QtGui.QDialogButtonBox(ModelImporterDlg)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
        self.gridLayout_2.addWidget(self.buttonBox, 1, 1, 1, 1)

        self.retranslateUi(ModelImporterDlg)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), ModelImporterDlg.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), ModelImporterDlg.reject)
        QtCore.QMetaObject.connectSlotsByName(ModelImporterDlg)

    def retranslateUi(self, ModelImporterDlg):
        ModelImporterDlg.setWindowTitle(_translate("ModelImporterDlg", "Model Importer", None))
        self.file_tw.setSortingEnabled(True)
        self.file_tw.headerItem().setText(0, _translate("ModelImporterDlg", "Model", None))
        self.file_tw.headerItem().setText(1, _translate("ModelImporterDlg", "Version", None))

import resource_rc

Tags: 文件textselfuimodeldefcontexttranslate
1条回答
网友
1楼 · 发布于 2024-04-24 11:07:32

是BOM!显然是设置,但隐藏在崇高的文本3。将"show_encoding": true添加到用户设置中,然后将编码更改为UTF-8,解决了这个问题。谢谢@ekhurvo

BOM

我的另一种解决方法是直接使用pyuic.py,这似乎不会与BOM一起输出:

python C:\osgeo\apps\Python27\Lib\site-packages\PyQt4\uic\pyuic.py -o model_importer.py model_importer.ui

相关问题 更多 >