約1.5か月改善できなかった、キー認識に関する問題があった。


PySimpleGUIの方がTKinterよりシンプルなコードで簡単に組めそうと、PySimpleGUIでウィンドウを作り、Webでの情報を参考にマウスで操作する条件分岐処理が簡単に書けたので、当初予定のEHUASHINA USB カスタマイズ スイッチ SPACEのスペースキーを押すと撮影検査を1回処理するべく、キーボード入力での操作に変更しようとしてツボにはまった。

ついでにESCキーでのプログラム終了も実装しようとしている。


下記のようなコードを書いたが、キーを押しても認識されない。

ut_now = datetime.datetime.now()
print(ut_now, 'MAIN Start')

while True:
    ut_now = datetime.datetime.now()
    print(ut_now, 'KEY')
    event, values = window.read() # timeout=数字msキー入力待ち、(key, value)のタプル形式でイベントを受取
    ut_now = datetime.datetime.now()
    print(ut_now, event, values)

    if event == sg.WIN_CLOSED:
        break
    elif event == 'Escape:27':
        break
    elif event == ' ':
        ut_now = datetime.datetime.now()
        print(ut_now, 'Space' )

ウィンドウの右上の終了ボタンのみ反応する。

プログラムが複雑になるのを覚悟して、他のキー入力ライブラリを使用してみたが、やはりキーを押しても認識されない。

VSCodeでもPycharm Community版でもだめ。


Yahoo知恵袋で質問し、回答をきっかけに、改善できた。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10285490920


https://naotoshisami.com/2022/02/pysimplegui-window-element-init/
にたどりつき、ひょっとしたら「keep_on_top=True」が必要かもと設定してみると、

スペースもESCも認識されるようになった。

どうも起動直後からウィンドウはほぼ画面いっぱいに表示されてはいるが、なぜか最前面に来ておらず、キー入力できない状態になっており、マウスで画面をクリックすると、最前面にきて反応していたようだ。


こんな落ちが待っているとは・・・


ともあれ他のキー入力ライブラリを使用する必要が無くなり、シンプルなコードで動作するようになったので、次の段階に進めるようになった。


このブログを始めるきっかけは、この問題が長引き、ちょっとプログラムを組むのにいやけがさしてきたので、ちょっと時間を空ける、ということと、失敗談で残して、ほかの人が同じ現象で悩まずにすむようになればいいな、ということ。

コメント

このブログの人気の投稿