如果它在 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
所以有一行代码,如果我 运行 它在 '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