Мне нужен инструмент для выдачи команд на устройство telnet, для которого не требуются печатные символы, такие как возврат каретки и перевод строки. В самом Python это достигается с помощью чего-то вроде следующего ...
myDevice.send(b'command\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 было введено следующее:
'hello\n'
Вот что выходит из печати:
b'hello\\n'
Что я действительно хочу увидеть, так это:
b'hello\n'
А после отправки на устройство становится всего 6 байтов.