keyboardを長押ししたとき最初に押されたときと最後に離されたときだけを検知したい

実現したいこと

無知な初心者です
pythonでキーイベントを検知するとき keyboard長押しすると連打されるため
PressイベントとReleaseイベントを繰り返し検知してしまいますが

長押しでキーが連打されている間
shellでは
最初にPressイベントを検知したときprint('キーが押されました')
最後にReleaseイベントが検知したときprint('キーが離されました')
とだけ表示されるようにしたいです

前提

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11216523206
より
Pressイベントが検知されたときの処理の仕方はわかりました
ただReleaseの時どうすればいいかわかりません
以下がそのコードになります

該当のソースコード

python

1from tkinter import*2import datetime 3 4tk=Tk()5canvas=Canvas(tk,width=100,height=100,bd=0)6canvas.pack()7 8dt = datetime.timedelta(seconds=0.1)9t = datetime.datetime.now()10 11#キーPressイベント12def key_a(event):13 #なぜここの変数dtをグローバルにする必要があるのかも教えていただけると嬉しいです14 global t,dt 15 if datetime.datetime.now()-t > dt:16 print('キーが押されました')17 18#キーReleaseイベント19def key_b(event):20 global t 21 t=datetime.datetime.now()22 #if datetime.datetime.now()-t > dt or 最後に検知されてから0.1秒たってもtの値が変更されていない:23 # print('キーが離されました')24 #って書けばいけるのかなーって思ってますが、書き方わかりません涙25 26 27canvas.bind_all('<KeyPress>',key_a)28canvas.bind_all('<KeyRelease>',key_b)29 30tk.mainloop()

試したこと

補足情報(FW/ツールのバージョンなど)

環境 raspberrypi4からThonny Python IDEで実行

コメントを投稿

0 コメント