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

2024-09-30 20:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

在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

控制台输出为:

text: \x00\x01 \ x 0 0 \ x 0 1 So it's behaving as if I typed in a string '\\x00\\x01' and escaped the forward slashes.

我正在尝试制作一个串行监视器应用程序,在这个应用程序中,我可以通过串行端口向Arduino发送字节。但我一直在努力将这些字节输入到Qt输入小部件中。你知道吗


Tags: 字符串textself字节sysasciiprintx00