実現したいこと
無知な初心者です
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で実行

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/05/05 08:49