1

入力ボックスに g^ と入力すると ĝ と入力したいプログラムがあります。ĝ が表示されるようになりましたが、入力された ^ のエントリ ボックスを削除できないようです (はい、削除機能を使用しようとしました)。私が解決できる限り、バインドされた関数が発生するまで ^ は入力されません。つまり、インデックス"^"orを試し"/"ても、実際にはまだ入力されていません。

from tkinter import *
tk = Tk()
entry = Entry(tk)
entry.pack()
entry.bind("^", lambda x: accent(entry, "^"))
entry.bind("/", lambda x: accent(entry, "/"))

def accent(object, accent):
    global entry
    letter = entry.get()[len(entry.get())-1]
    entry.delete((len(entry.get())-1), len(entry.get()))
    if accent == "^":
        if letter == "a":
            entry.insert(END, "â")
        if letter == "g":
            entry.insert(END, "ĝ")
    if accent == "/":
        if letter == "a":
            entry.insert(END, "á")
4

1 に答える 1

1

バインディングは を返す必要が"break"あります。これは、tkinter にイベントのそれ以上の処理を停止するように指示します。「break」を返すと、文字が挿入されなくなります。

于 2014-03-16T12:26:13.150 に答える