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