我需要一个工具来向 telnet 设备发出命令,该设备不需要可打印的字符,例如回车符和换行符。在 python 本身中,这是通过如下内容实现的......
myDevice.send(b'命令\n\r')
这将导致 9 个字节被发送到设备。
我想在 Tkinter 输入框中输入这样的字符串。然而,似乎 Tk 输入框对其自身而言过于聪明,并且逃脱了\,因此每当我引入\r\n 或\x0a 等时,我总是得到\\。换句话说,它总是可打印的。
我不断地尝试将生成的字符串呈现为我需要的内容,但没有喜悦。我在下面提供了一个小例子来说明问题。
from tkinter import *
def show_entry_fields():
print(e1.get().encode())
def show_string():
myString = b'hello\n'
print(myString)
master = Tk()
Label(master, text="Enter string with \\n").grid(row=0)
e1 = Entry(master)
e1.insert(10,"enter with escape char")
e1.grid(row=0, column=2)
Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Show Entry', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)
Button(master, text='Show myString', command=show_string).grid(row=3, column=2, sticky=W, pady=4)
mainloop( )
在 tk 输入框中输入以下内容:
'你好\n'
这是打印出来的内容:
b'你好\\n'
我真正想看到的是:
b'你好\n'
一旦发送到设备就变成只有 6 个字节。
最佳答案
以下内容适用于所有字符,包括 \n
、\r
、\t
和 \x00 -\xff
print(e1.get().encode('latin-1').decode('unicode_escape').encode('latin-1'))
关于python - 如何从 Tkinter 条目小部件获取字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56055792/