2013-02-22 99 views
3

我想寫類似超級終端的小應用程序: 在文本輸入控件的每個字符的串行端口上發送和串行端口上接收到的每個字符顯示在文本小。 問題是連接到串口的設備返回它收到的字符的回聲。所以我在Text小部件中得到了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) 

有沒有什麼方法可以隱藏輸入的字符?

回答

1

我不能完全肯定你如何使用Text小部件串行端口,但似乎你想,當你按下鍵來覆蓋默認行爲。您可以通過在處理函數返回字符串"break"完成它:

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

我已經試過了關於Python 2.7(含8.1 Tkinter的),我想這也應該在你的版本,但如果它不, 讓我知道。

+0

謝謝A.羅達斯, 是的,但我怎麼能攔截鍵入的字符發送串行端口上。 通常在我的程序中,事件分支到我的鍵盤功能,它接收event.char中輸入的字符並將它寫入串行端口 – 2013-02-26 11:17:03

+0

您是否指定如何使用已綁定到「」 '事件?在這種情況下,只需在函數結尾添加「return」break「'。 – 2013-02-26 11:25:53

+0

非常感謝,它工作完美。 – 2013-02-26 12:09:08