回答編集履歴
5
説明変更
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
root.after を使うとメインスレッドから呼び出されてしまいます
|
1
|
+
root.after を使うとメインスレッドから呼び出されてしまいます。普通に time.sleep するといいです。
|
2
2
|
|
3
3
|
tkinterはシングルスレッドで動作することを前提に作られているようで、サブスレッドからは 変数ガジェット(`*Var`) にsetするのが無難です。
|
4
|
+
|
5
|
+
以下のようにすることで正常終了するようになりました。
|
4
6
|
|
5
7
|
|
6
8
|
|
4
スレッド生成処理変更
test
CHANGED
@@ -40,15 +40,11 @@
|
|
40
40
|
|
41
41
|
ping.running = True
|
42
42
|
|
43
|
-
threads = []
|
43
|
+
threads = [th.Thread(target=ping, args=(user,)) for user in PEOPLE]
|
44
44
|
|
45
|
-
for
|
45
|
+
for thread in threads:
|
46
|
-
|
47
|
-
thread = th.Thread(target=ping, args=(user,))
|
48
46
|
|
49
47
|
thread.start()
|
50
|
-
|
51
|
-
threads.append(thread)
|
52
48
|
|
53
49
|
return threads
|
54
50
|
|
3
res.messages表示
test
CHANGED
@@ -74,6 +74,8 @@
|
|
74
74
|
|
75
75
|
res = p.ping(PEOPLE[user])
|
76
76
|
|
77
|
+
print(user, res.messages)
|
78
|
+
|
77
79
|
if res.is_reached():
|
78
80
|
|
79
81
|
status[user].set(f'□ {user}')
|
2
PC名修正
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
'user3': 'PC3',
|
26
26
|
|
27
|
-
'user4': '
|
27
|
+
'user4': 'PC4'
|
28
28
|
|
29
29
|
}
|
30
30
|
|
1
理由追記、KeyboardInterrupt処理追記
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
root.after を使うとメインスレッドから呼び出されてしまいますよ。普通に time.sleep するといいです。
|
2
|
+
|
1
3
|
tkinterはシングルスレッドで動作することを前提に作られているようで、サブスレッドからは 変数ガジェット(`*Var`) にsetするのが無難です。
|
2
4
|
|
3
5
|
|
@@ -22,7 +24,7 @@
|
|
22
24
|
|
23
25
|
'user3': 'PC3',
|
24
26
|
|
25
|
-
'user4': '
|
27
|
+
'user4': '10.111.0.1'
|
26
28
|
|
27
29
|
}
|
28
30
|
|
@@ -108,9 +110,19 @@
|
|
108
110
|
|
109
111
|
|
110
112
|
|
111
|
-
r
|
113
|
+
try:
|
112
114
|
|
115
|
+
root.mainloop()
|
116
|
+
|
117
|
+
except KeyboardInterrupt:
|
118
|
+
|
119
|
+
print()
|
120
|
+
|
121
|
+
print("killed")
|
122
|
+
|
123
|
+
else:
|
124
|
+
|
113
|
-
print("closed")
|
125
|
+
print("closed")
|
114
126
|
|
115
127
|
|
116
128
|
|