回答編集履歴

2

sleep入れ忘れ

2018/06/01 14:10

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -74,6 +74,8 @@
74
74
 
75
75
  while not stop:
76
76
 
77
+ time.sleep(0.1) # 最初この行を入れ忘れてました!!!
78
+
77
79
  if key is not None:
78
80
 
79
81
  print('pressed {}'.format(key))

1

誤記

2018/06/01 14:10

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -114,9 +114,9 @@
114
114
 
115
115
 
116
116
 
117
- ポイントはmainloopの実行前に主たる制御論理(上の例ではmain関数)を別のスレッドで動かすことです。メインスレッドではtkinterの通常の動作(イベント駆動型)が行われておりずっとmainloop関数が動きっぱなしになります。それとは別のスレッドでmain関数が実行され、keyA, keyBで押されたキーをグローバーる変数に格納するとmain関数の中でそれを検出して何かするという感じですね。
117
+ ポイントはmainloopの実行前に主たる制御論理(上の例ではmain関数)を別のスレッドで動かすことです。メインスレッドではtkinterの通常の動作(イベント駆動型)が行われておりずっとmainloop関数が動きっぱなしになります。それとは別のスレッドでmain関数が実行され、keyA, keyBで押されたキーをグローバ変数に格納するとmain関数の中でそれを検出して何かするという感じですね。
118
118
 
119
- 実験のためメインスレッドと別のスレッドでtkinterのキャンバス上に描画してみましたが、何か動くいです。他の言語のGUIライブラリーだと複数のスレッドから画面を触るのは「いけません」てことになっているのですが、PythonのGIL(Global Interpreter Lock)の仕様のためそのあたりの制限はゆるーくなっているのかも知れません(もしかたしたらダメなのかも知れません。自身ないです)
119
+ 実験のためメインスレッドと別のスレッドでtkinterのキャンバス上に描画してみましたが、動くように見えました。他の言語のGUIライブラリーだと複数のスレッドから画面を触るのは「いけません」てことになっているのですが、PythonのGIL(Global Interpreter Lock)の仕様のためそのあたりの制限はゆるーくなっているのかも知れません(もしかたしたらダメなのかも知れません。自身ないです)
120
120
 
121
121
 
122
122