-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
89 lines (70 loc) · 3.33 KB
/
main.py
File metadata and controls
89 lines (70 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import tkinter as tk
from ProcessClass import ControllingProcess
ImapScriptPath = "./imapTest/index.js"
RemedySciptPath = "./pythonCbr/main.py"
AnnouncerScriptPath = "./ExpireAnouncer/main.py"
WebDispatcherScriptPath = "./TestWebDispatcher/index.js"
CertCheckerPath = './certChecker/main.py'
ImWebServer = './TestImApp/index.js'
StpkWebServer = './StpkWebServer/index.js'
def toggle_status(block_num):
statuses[block_num] = not statuses[block_num]
update_ui()
def update_ui():
for i in range(len(blocks)):
status_labels[i].config(text="Статус: " + ("Активен" if statuses[i] else "Неактивен"), fg=("green" if statuses[i] else "red"))
start_buttons[i].config(state=("disabled" if statuses[i] else "normal"))
stop_buttons[i].config(state=("normal" if statuses[i] else "disabled"))
def update_statuses():
for i, block in enumerate(blocks):
if ScriptsProccesses[block].is_running():
statuses[i] = True
else:
statuses[i] = False
ScriptsProccesses[block].start(block)
update_ui() # Обновляем UI один раз после проверки всех статусов
def start_process(block_num):
ScriptsProccesses[blocks[block_num]].start(blocks[block_num])
update_statuses()
def stop_process(block_num):
ScriptsProccesses[blocks[block_num]].stop()
update_statuses()
def periodic_check():
update_statuses()
root.after(2000, periodic_check) # Планируем следующую проверку через 2000 мс (2 секунды)
root = tk.Tk()
root.title("Статусы блоков")
root.geometry("500x200")
root.resizable(False, False)
blocks = ["IM service", "Remedy service"]
statuses = [False,False, False, False, False, False, False]
status_labels = []
start_buttons = []
stop_buttons = []
ScriptsProccesses = {
"IM service": ControllingProcess(ImapScriptPath, "Node"),
"Web dispatcher": ControllingProcess(WebDispatcherScriptPath, "Node"),
"Remedy service": ControllingProcess(RemedySciptPath, "Python"),
"Announcer service": ControllingProcess(AnnouncerScriptPath, "Python"),
"Cert checker": ControllingProcess(CertCheckerPath, "Python"),
"ImWebServer": ControllingProcess(ImWebServer, "Node"),
"StpkWebServer": ControllingProcess(StpkWebServer, "Node")
}
for i, block in enumerate(blocks):
frame = tk.Frame(root, borderwidth=2, relief="groove", pady=10)
frame.pack(padx=20, pady=5, fill="both", expand=True)
frame.columnconfigure(0, weight=1)
label = tk.Label(frame, text=block, anchor="center")
label.grid(row=0, column=0, columnspan=2)
status_label = tk.Label(frame, text="",anchor="center")
status_label.grid(row=1, column=0, columnspan=2, sticky="ew")
status_labels.append(status_label)
start_button = tk.Button(frame, text="Запустить", command=lambda i=i: start_process(i),anchor="center")
start_button.grid(row=2, column=0, padx=5, sticky="w")
start_buttons.append(start_button)
stop_button = tk.Button(frame, text="Остановить", command=lambda i=i: stop_process(i),anchor="center")
stop_button.grid(row=2, column=1, padx=5, sticky="e")
stop_buttons.append(stop_button)
update_ui()
periodic_check() # Инициализируем периодическую проверку статусов
root.mainloop()