回答編集履歴

2

追記

2019/04/30 22:17

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -97,3 +97,65 @@
97
97
 
98
98
 
99
99
  ```
100
+
101
+
102
+
103
+ ---
104
+
105
+
106
+
107
+ 単一のスレッドで回し続けると、カウンタ変数を書き換えるだけで簡単に実現できます。
108
+
109
+
110
+
111
+ ```python
112
+
113
+ import time
114
+
115
+ import threading
116
+
117
+ import tkinter as tk
118
+
119
+
120
+
121
+ def count():
122
+
123
+ global i
124
+
125
+ i = 0
126
+
127
+ while True:
128
+
129
+ print(i % 3 + 1)
130
+
131
+ i += 1
132
+
133
+ time.sleep(1)
134
+
135
+
136
+
137
+ def call_count():
138
+
139
+ global i
140
+
141
+ i = 0
142
+
143
+ if not th.isAlive():
144
+
145
+ th.start()
146
+
147
+
148
+
149
+ root=tk.Tk()
150
+
151
+ button=tk.Button(root,text="Count",command=call_count)
152
+
153
+ button.pack()
154
+
155
+
156
+
157
+ th = threading.Thread(target=count, daemon=True)
158
+
159
+ root.mainloop()
160
+
161
+ ```

1

追記

2019/04/30 22:17

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -33,6 +33,10 @@
33
33
 
34
34
 
35
35
  これはほぼ期待通り動きます。とはいえ、余計に待たされてダサいですね。
36
+
37
+
38
+
39
+ **追記:can110さんのjoinする方法もシンプルで良いと思います。以下の方法とは若干動作が異なります(1秒を待ってから次のスレッドが起動するか、待たないでそのまま切り替わるか)。**
36
40
 
37
41
 
38
42