-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
81 lines (62 loc) · 2.86 KB
/
app.py
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
import threading
from customtkinter import *
from CTkMessagebox import CTkMessagebox
from tkinter import PhotoImage
from os import startfile, path
import utils
from frames import *
from settings import settings
from screeninfo import get_monitors
from style import *
class App(CTk):
def __init__(self):
super().__init__()
self.title('Основное окно')
utils.move_to_first_screen(self)
self.protocol("WM_DELETE_WINDOW", self.confirm_delete)
utils.load_settings()
utils.start_auto_saving()
if settings['fullscreen_mode'] and len(get_monitors()) >= 2:
t = threading.Thread(target=utils.paint_second_monitor)
t.start()
self.tabview = CTkTabview(master=self, command=self.tab_changed, fg_color=window_fg_color)
self.tabview.pack(expand=True, fill=BOTH)
frame_texts = ['Общие настройки', 'Запуск эксперимента', 'Проверка устройств', 'Экспорт данных',
'Информация о приложении']
self.frames = []
for text in frame_texts:
self.tabview.add(text)
self.frames.append(self.tabview.tab(text))
self.test_image = [PhotoImage(file="pictograms/settings.png"),
PhotoImage(file="pictograms/run.png"),
PhotoImage(file='pictograms/yes.png') if utils.serial_available else PhotoImage(
file="pictograms/no.png"),
PhotoImage(file="pictograms/data.png"),
PhotoImage(file="pictograms/info.png")]
self.settings_frame = SettingsFrame(self.frames[0], self)
self.run_frame = RunFrame(self.frames[1], self)
self.devise_check_frame = DeviseCheckFrame(self.frames[2], self)
self.dataframe = DataFrame(root=self.frames[3])
self.info_frame = InfoFrame(self.frames[4])
self.bind("<Key>", self.key_handler)
def key_handler(self, event):
if event.char == settings['escape_key']:
self.run_frame.close_experiment_window()
def tab_changed(self):
if self.tabview.get() == 'Информация о приложении':
doc_path = path.abspath(path.join('docs', 'index.html'))
startfile(doc_path)
def confirm_delete(self):
msg = CTkMessagebox(title="Закрыть",
message="Вы уверены, что хотите закрыть это окно?",
option_1="Да",
option_2="Нет")
if msg.get() == 'Да':
utils.save_settings()
self.destroy()
if __name__ == '__main__':
print('start...')
set_appearance_mode('System')
set_default_color_theme('blue')
app = App()
app.mainloop()