私は私のために、私はこれは良い作品だと思い、それらの二つのソースに基づいて、コードを編集しています
def handle_keyrelease(self, event):
"""event handler for the keyrelease event on this widget"""
if event.keysym == "BackSpace":
if self.position < self.index(END): # delete the selection
self.delete(self.position, END)
else:
#self.delete(self.index(INSERT), END)
self.position = self.index(END)
if event.keysym == "Left":
if self.position < self.index(END): # delete the selection
self.delete(self.position, END)
#else:
#self.position = self.position-1 # delete one character
#self.delete(self.position, END)
if event.keysym == "Right":
self.position = self.index(END) # go to end (no selection)
if event.keysym == "Down":
self.autocomplete(1) # cycle to next hit
if event.keysym == "Up":
self.autocomplete(-1) # cycle to previous hit
# perform normal autocomplete if event is a single key or an umlaut
if len(event.keysym) == 1:
self.autocomplete()
基本的に、それはイアン・ヴァイサーのバージョンです。 「backspace」キー部分にif
句を追加して、ユーザーが戻ってスペルミスを修正できるように、上記のコメント行を削除しました。ユーザーが戻って何かを編集すると、以前に入力されたテキストの残りの部分は元のままになり、ユーザーが(残っているオートコンプリートのみを削除するが残りはそのまま残す)か、またはバックスペース(オートコンプリートと1文字を削除一度に、期待どおり)。ユーザーがテキストをマウスでクリックすると、何も削除されません。