私のプログラムでは、ユーザーが入力中にguiを更新したいと思います。リソースの理由から、ユーザーがxミリ秒間何かを入力していない場合にのみ実行したいと思います。ここでは動作する例がありますが、2つの追加機能が必要で少し冗長であるため、あまり好きではありません。ユーザーがTkinterの入力をやめるまで待つ
import tkinter as tk
import random
COLORS =["red", "orange", "yellow", "green", "blue", "violet"]
class Application(tk.Frame):
def __init__(self,master):
self.counter = 0
self.master = master
tk.Frame.__init__(self)
self.pack()
self.entry = tk.Entry(self)
self.entry.pack()
self.entry.bind('<Key>',lambda event: self.handle_wait(event))
def handle_wait(self,event):
self.counter += 1
counter = self.counter
self.after(1000,lambda: self.handle_wait2(counter))
def handle_wait2(self,counter):
if self.counter == counter:
self.change_color()
def change_color(self):
random_color = random.choice(COLORS)
self.entry.config(background=random_color)
root = tk.Tk()
app = Application(root)
app.mainloop()
それを行うには良い方法はありますか?
'Entry'ウィジェットのオプションの検証機能を使用して、最後のキーストロークが入力された時刻を記録し、その値を' after() 'コールバック関数でチェックすることができます。 Entryウィジェットの検証の詳細はこちら(http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/entry-validation.html)。 – martineau