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

时间:2019-07-14 07:09:28

标签: python maya pyside2

所以有几行代码可以说,如果我在“脚本编辑器”中运行它,它将可以正常工作,但是如果它从PySide2获得相同的文本,则将无法正常工作。

让我们说您在输入中输入了“ a#↑”。它会打印“ a”和“#”,但不会打印“↑”,而是打印“无法识别”。这仅发生在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')

1 个答案:

答案 0 :(得分:0)

因此,这就是“脚本编辑器”的问题。感谢Autodesk论坛中的@zewt,他为此提供了一种解决方案。如果您导入包含该代码的文件,而不仅仅是在脚本编辑器中直接运行该代码,那么它将起作用。

这是指向his solution

的链接