python - 如何从 Tkinter 条目小部件获取字节数组

标签 python python-3.x tkinter tkinter-entry

我需要一个工具来向 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/

相关文章:

python - (实例化一组按钮,但只有一个有效

python - Tk/ttk python 中的帧大小调整问题

python - 仅在设定的时间段内出现的标签

python - 从链表中删除节点

python - 在opencv中将非标准分辨率的帧写入视频

python - 如果在包根目录中,则无法导入 C++ 扩展

python - 从另一个对象的变量设置一个对象的变量时奇怪的 Python 行为

c++ - 从 Python 调用 IB API

python - 如何在 Windows 的 CPython Jupyter 中使用 pypy 作为内核?

python - 如何在单独的列表中拆分字符串中的每个单词