3

ハイパーターミナルに似た小さなアプリケーションを作成しようとしています: Text ウィジェットに入力された各文字はシリアル ポートで送信され、シリアル ポートで受信された各文字は 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)

入力した文字を非表示にする方法はありますか?

4

1 に答える 1

2

シリアルポートでウィジェットをどのように使用しているかは完全にはわかりませんがText、キーを押したときのデフォルトのアクションをオーバーライドしたいようです。"break"ハンドラー関数で文字列を返すことで実現できます。

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

Python 2.7 (Tkinter 8.1 を使用) で試しましたが、あなたのバージョンでも動作するはずですが、動作しない場合はお知らせください。

于 2013-02-24T14:13:23.307 に答える