回答編集履歴

1

コメントを受けて追記

2023/07/14 10:36

投稿

TakaiY
TakaiY

スコア14426

test CHANGED
@@ -5,3 +5,47 @@
5
5
 
6
6
  after_cancel()したい理由はよくわかりませんでした。
7
7
 
8
+ ---
9
+ 追記
10
+
11
+ コメントいただいたので、コードちょっと読んでみました。
12
+ 前の回答はちょっとまとを外していましたね。
13
+
14
+ 2重ループになるので、部屋番号と窓番号を別のafterループ(と言うのか)で制御しようとしていたのですね。
15
+ 窓を1つずつ進んで、1部屋終れば次の部屋でよければ、1つだけで足りると思います。
16
+ roomNoと windowNoを両方制御すればいいはずです。
17
+
18
+ ```python
19
+ def select_room_window(self):
20
+
21
+ #数値設定
22
+ global roomNo
23
+ global windowNo
24
+ global after_id
25
+
26
+
27
+ if windowNo >= WINNUM_ARRAY[int(roomNo)-1]:
28
+ #最大窓番号 になったら次の部屋に移る
29
+ windowNo = 1
30
+ roomNo += 1
31
+ #最大部屋番号 になったら最初の部屋に移る
32
+ if roomNo >= len(WINNUM_ARRAY):
33
+ roomNo = 1
34
+ else:
35
+ # 次の窓に移る
36
+ windowNo += 1
37
+
38
+ after_id = self.lblClock_hms.after(MAX_SEC, self.select_room_window)
39
+
40
+
41
+ #再描画
42
+ self.lblwindow_control_caption.destroy()
43
+ self.lblwindow_control_caption = customtkinter.CTkLabel(self.window_control_frame, text=str(roomNo)+"号室 No."+str(windowNo)+" 制御中")
44
+ self.lblwindow_control_caption.grid(row=0, column=0, padx=10, pady=(0, 0), sticky="nw",columnspan=2)
45
+
46
+ #デバッグ用
47
+ print(f"部屋番号:{roomNo},窓番号:{windowNo}")
48
+ ```
49
+
50
+ この関数1つだけで窓と部屋を回しています。
51
+ after_idは残していますが使っていません。