3

我正在尝试编写类似于超级终端的小应用程序:在文本小部件中键入的每个字符都在串行端口上发送,而在串行端口上接收的每个字符都显示在文本小部件中。问题是连接到串行端口的设备返回它接收到的字符的回显。所以我在文本小部件中得到 2 个字符(输入和回显)

我试图删除每个键入的字符,但我正在寻找更好的解决方案。

def clavier(event):
    global sp
    edit.delete("insert-1c") # delete typed character
    try:
        sp.write(event.char.encode('Latin-1'))
    except:
        edit.insert(INSERT,'\nPort fermé, choisissez un port\n', 'rouge')

edit = Text(cadre, width=50,height=20,yscrollcommand = Vscroll.set)
edit.bind("<KeyRelease>", clavier)

有没有办法隐藏输入的字符?

4

1 回答 1

2

我不完全确定您如何将Text小部件与串行端口一起使用,但似乎您想在按下键时覆盖默认操作。您可以通过"break"在处理函数中返回字符串来完成它:

edit.bind("<KeyPress>", lambda e: "break")

我已经在 Python 2.7(使用 Tkinter 8.1)上尝试过它,我想它也应该适用于您的版本,但如果不能,请告诉我。

于 2013-02-24T14:13:23.307 回答