PyQt5保留来自QLineEdit或其他Qt小部件的十六进制字符

时间:2019-06-28 18:40:12

标签: python python-3.x pyqt pyqt5

在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_())

enter image description here

控制台输出为:

  

文本:\ x00 \ x01   \   X   0   0   \   X   0   1个   因此,就好像我在输入字符串'\\x00\\x01'并转义了正斜杠一样。

我正在尝试创建一个串行监视器应用程序,在这里我可以通过串行端口将字节发送到Arduino。但是我一直无法将这些字节输入到Qt输入小部件中。

1 个答案:

答案 0 :(得分:1)

您可以像这样使用它:

text = self.myedit.text().encode().decode('unicode-escape')

希望对您有用