在Python3中,如果我需要在字符串或字节字符串中放入不可打印的字符,则可以使用
mystring = '\x00\x01'
mybytestring = b'\x00\x01'
其中\x00
对应于ASCII 0,\x01
是ASCII 1
>>> mystring = '\x00\x01'
>>> print(mystring)
☺
>>> ord(mystring[0])
0
>>> ord(mystring[1])
1
>>> mybytestring = b'\x00\x01'
>>> mybytestring[0]
0
>>> mybytestring[1]
1
如果我尝试通过从QLineEdit抓取文本来执行此操作,则正斜杠似乎会被转义,并且我无法找到一种“转义”它们的好方法。最小PyQt示例:
from PyQt5.QtWidgets import (QWidget, QApplication, QLineEdit)
import sys
class Example(QWidget):
def __init__(self):
super().__init__()
self.myedit = QLineEdit(self)
self.myedit.move(10,10)
self.myedit.returnPressed.connect(self.on_myedit_returnPressed)
self.setGeometry(500, 500, 200, 50)
self.show()
def on_myedit_returnPressed(self):
text = self.myedit.text()
print('text: ', text)
for i in range(len(text)):
print(text[i])
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
控制台输出为:
文本:\ x00 \ x01 \ X 0 0 \ X 0 1个 因此,就好像我在输入字符串
'\\x00\\x01'
并转义了正斜杠一样。
我正在尝试创建一个串行监视器应用程序,在这里我可以通过串行端口将字节发送到Arduino。但是我一直无法将这些字节输入到Qt输入小部件中。
答案 0 :(得分:1)
您可以像这样使用它:
text = self.myedit.text().encode().decode('unicode-escape')
希望对您有用