如果它在 PySide2 中,maya 无法识别 unicode?

maya can't recognize unicode if it's in PySide2?

所以有一行代码,如果我 运行 它在 'script editor' 它会工作正常,但如果它从 PySide2 获得相同的文本它就不会工作。

假设您将 'a#↑' 放入您的输入中。它会打印 'a' 和 '#' 但不会打印 '↑' 而是打印 'Not recognized'。这只发生在 Maya 中,而不是 windows。我很困惑。

# -*- coding: utf-8 -*-
from PySide2 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(165, 125, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.plainTextEdit = QtWidgets.QPlainTextEdit(Form)
        self.plainTextEdit.setGeometry(QtCore.QRect(30, 10, 341, 96))
        self.plainTextEdit.setInputMethodHints(QtCore.Qt.ImhNone)
        self.plainTextEdit.setObjectName("plainTextEdit")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

        self.pushButton.clicked.connect(self.printIt)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "Test"))

    def printIt(self):
        text = self.plainTextEdit.toPlainText()
        for i in text:
            if i == "a":
                print ('a is printed')
            elif i == "#":
                print ('# is printed')
            elif i == "↑":
                print ('↑ is printed')
            else:
                print ('not recognized')


if __name__ == "__main__":
    import sys
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()

但在这种形式下它工作正常:

text = 'a#↑'
for i in text:
    if i == "a":
        print ('a is printed')
    elif i == "#":
        print ('# is printed')
    elif i == "↑":
        print ('↑ is printed')
    else:
        print ('not recognized')

原来这是 "script editor" 问题。感谢 Autodesk 论坛中的@zewt,他为此介绍了一个解决方案。如果您直接在脚本编辑器中导入包含代码的文件而不是 运行 代码,那么它就可以工作。

这里是 link 到 his solution