teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

補足: 質問文に nfc なしのケースについて言及があったので、説明の細部を補足。

2020/08/30 13:55

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -23,7 +23,7 @@
23
23
  スレッドの使い方は修正した方が良いです。
24
24
 
25
25
  もし、影響が無かったとしたら、
26
- nfc なしで問題が発生するかどうかを試してみてください。
26
+ nfc なし(補足: スレッドは使って)で問題が発生するかどうかを試してみてください。
27
27
 
28
28
  ----
29
29
  ```python

1

関数がどのスレッドで実行されているのか、把握しやすいようにロギングを設定

2020/08/30 13:55

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -29,20 +29,21 @@
29
29
  ```python
30
30
  #!/usr/bin/env python3.8
31
31
 
32
-
33
32
  import tkinter as tk
34
33
  from threading import Thread
34
+ import logging
35
35
 
36
-
37
36
  def thread_main(root):
37
+ logging.info("thread_main started")
38
+ logging.info("Open Dialog")
38
- win = tk.Toplevel(root)
39
+ win = tk.Toplevel()
39
40
  win.geometry("100x100+100+100")
40
41
 
41
-
42
42
  def main():
43
43
  root = tk.Tk()
44
44
 
45
45
  def start():
46
+ logging.info("Button clicked")
46
47
  thread = Thread(target=thread_main, args=(root,), daemon=True)
47
48
  thread.start()
48
49
 
@@ -50,6 +51,7 @@
50
51
  root.mainloop()
51
52
 
52
53
  if __name__ == '__main__':
54
+ logging.basicConfig(level=logging.INFO, format="[%(threadName)s] %(message)s")
53
55
  main()
54
56
  ```
55
57
 
@@ -58,24 +60,24 @@
58
60
  ```python
59
61
  #!/usr/bin/env python3.8
60
62
 
61
-
62
63
  import tkinter as tk
63
64
  from threading import Thread
65
+ import logging
64
66
 
65
67
  def open_dialog(root):
68
+ logging.info("Open Dialog")
66
69
  win = tk.Toplevel(root)
67
70
  win.geometry("100x100+100+100")
68
71
 
69
72
  def thread_main(root):
70
- # これは有用なスレッドの利用例ではありませんが、
71
- # 動作検証の為、サブスレッドからメインスレッドで open_dialog を呼ぶ
73
+ logging.info("thread_main started")
72
74
  root.after_idle(open_dialog, root)
73
75
 
74
-
75
76
  def main():
76
77
  root = tk.Tk()
77
78
 
78
79
  def start():
80
+ logging.info("Button clicked")
79
81
  thread = Thread(target=thread_main, args=(root,), daemon=True)
80
82
  thread.start()
81
83
 
@@ -83,5 +85,6 @@
83
85
  root.mainloop()
84
86
 
85
87
  if __name__ == '__main__':
88
+ logging.basicConfig(level=logging.INFO, format="[%(threadName)s] %(message)s")
86
89
  main()
87
90
  ```