回答編集履歴
5
説明変更
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
root.after を使うとメインスレッドから呼び出されてしまいます
|
1
|
+
root.after を使うとメインスレッドから呼び出されてしまいます。普通に time.sleep するといいです。
|
2
2
|
tkinterはシングルスレッドで動作することを前提に作られているようで、サブスレッドからは 変数ガジェット(`*Var`) にsetするのが無難です。
|
3
|
+
以下のようにすることで正常終了するようになりました。
|
3
4
|
|
4
5
|
```python
|
5
6
|
import time
|
4
スレッド生成処理変更
answer
CHANGED
@@ -19,11 +19,9 @@
|
|
19
19
|
|
20
20
|
def start_threads():
|
21
21
|
ping.running = True
|
22
|
-
threads = []
|
23
|
-
for user in PEOPLE:
|
24
|
-
|
22
|
+
threads = [th.Thread(target=ping, args=(user,)) for user in PEOPLE]
|
23
|
+
for thread in threads:
|
25
24
|
thread.start()
|
26
|
-
threads.append(thread)
|
27
25
|
return threads
|
28
26
|
|
29
27
|
def stop_threads(threads):
|
3
res.messages表示
answer
CHANGED
@@ -36,6 +36,7 @@
|
|
36
36
|
p = pings.Ping()
|
37
37
|
while ping.running:
|
38
38
|
res = p.ping(PEOPLE[user])
|
39
|
+
print(user, res.messages)
|
39
40
|
if res.is_reached():
|
40
41
|
status[user].set(f'□ {user}')
|
41
42
|
else:
|
2
PC名修正
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
'user1': 'PC1',
|
12
12
|
'user2': 'PC2',
|
13
13
|
'user3': 'PC3',
|
14
|
-
'user4': '
|
14
|
+
'user4': 'PC4'
|
15
15
|
}
|
16
16
|
|
17
17
|
root = tk.Tk()
|
1
理由追記、KeyboardInterrupt処理追記
answer
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
root.after を使うとメインスレッドから呼び出されてしまいますよ。普通に time.sleep するといいです。
|
1
2
|
tkinterはシングルスレッドで動作することを前提に作られているようで、サブスレッドからは 変数ガジェット(`*Var`) にsetするのが無難です。
|
2
3
|
|
3
4
|
```python
|
@@ -10,7 +11,7 @@
|
|
10
11
|
'user1': 'PC1',
|
11
12
|
'user2': 'PC2',
|
12
13
|
'user3': 'PC3',
|
13
|
-
'user4': '
|
14
|
+
'user4': '10.111.0.1'
|
14
15
|
}
|
15
16
|
|
16
17
|
root = tk.Tk()
|
@@ -53,8 +54,13 @@
|
|
53
54
|
threads = start_threads()
|
54
55
|
print("started")
|
55
56
|
|
57
|
+
try:
|
56
|
-
|
58
|
+
root.mainloop()
|
59
|
+
except KeyboardInterrupt:
|
60
|
+
print()
|
61
|
+
print("killed")
|
62
|
+
else:
|
57
|
-
|
63
|
+
print("closed")
|
58
64
|
|
59
65
|
print("stopping...")
|
60
66
|
stop_threads(threads)
|