/
Salmon228
/
Algebra
Обзор
Документация
Войти
/
Salmon228
/
Algebra
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
5
CI/CD
Аналитика
Безопасность
master
filter_window.py
78 строк
4 KB
Salmon228
Исправлен визуал и некоторые названия.
19 мар 2026, 20:12
19 мар 2026, 20:12
2c7ddcf
Код
Авторство
О чём код?
import customtkinter as ctk from customtkinter import CTkLabel, CTkOptionMenu, CTkButton import config from tkinter import messagebox, StringVar import sys import filter import main import updater def update_tasks(): updater.check_for_update() class FilterTopWindow(ctk.CTkToplevel): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.title("Настройки") self.geometry("365x230") if sys.platform != "linux": self.iconbitmap("resources/icons8-square-root-48.ico") self.resizable(False, False) config.load_config("./resources/config.json") self.filter_var = StringVar(value=config.SETTINGS["filter"]) self.theme_var = StringVar(value="Светлая" if config.THEME == "light" else "Тёмная") self.color_var = StringVar( value="Синий" if config.COLOR == "blue" else "Зелёный" if config.COLOR == "green" else "Тёмно-синий") self.update_period_var = StringVar(value=config.UPDATE_PERIOD) self.filter_label = CTkLabel(master=self, text="Выберите тип неравенств: ") self.filter_select = CTkOptionMenu(master=self, values=["Линейные", "Квадратные", "С модулем"], variable=self.filter_var) self.theme_label = CTkLabel(master=self, text="Выберите тему оформления: ") self.theme_select = CTkOptionMenu(master=self, values=["Светлая", "Тёмная"], variable=self.theme_var) self.color_label = CTkLabel(master=self, text="Выберите цвет оформления: ") self.color_select = CTkOptionMenu(master=self, values=["Синий", "Зелёный", "Тёмно-синий"], variable=self.color_var) self.update_period_label = CTkLabel(master=self, text="Укажите частоту обновления: ") self.update_period = CTkOptionMenu(master=self, values=["Постоянно", "7 дней", "30 дней", "2 мес.", "4 мес.", "6 мес.", "8 мес.", "10 мес.", "1 год"], variable=self.update_period_var) self.update_btn = CTkButton(master=self, text="Обновить", command=self.update_tasks) self.submit_btn = CTkButton(master=self, text="Сохранить изменения", command=self.submit) self.place_stuff() def place_stuff(self): self.filter_label.grid(column=0, row=0, padx=10, pady=5, sticky="e") self.filter_select.grid(column=1, row=0, padx=10, pady=5) self.theme_label.grid(column=0, row=1, padx=10, pady=5, sticky="e") self.theme_select.grid(column=1, row=1, padx=10, pady=5) self.color_label.grid(column=0, row=2, padx=10, pady=5, sticky="e") self.color_select.grid(column=1, row=2, padx=10, pady=5) self.update_period_label.grid(column=0, row=3, padx=10, pady=5, sticky="e") self.update_period.grid(column=1, row=3, padx=10, pady=5) self.submit_btn.grid(column=0, row=4, columnspan=2, pady=5, sticky="we", padx=10) self.update_btn.grid(column=0, row=5, columnspan=2, pady=5, sticky="we", padx=10) def submit(self): config.COLOR = "green" if self.color_var.get() == "Зелёный" else "blue" if self.color_var.get() == "Синий" else "dark-blue" config.THEME = "dark" if self.theme_var.get() == "Тёмная" else "light" config.SETTINGS = {"diff": config.SETTINGS["diff"], "filter": self.filter_var.get()} config.UPDATE_PERIOD = self.update_period_var.get() config.save_settings("resources/config.json") messagebox.showwarning(title="Info", message="Для активации изменений необходимо перезагрузить программу.") def update_tasks(self): updater.check_for_update(manually=True) main.win.filter_var = StringVar(value=config.SETTINGS["filter"]) main.update_tasks(filter.get_tasks([main.win.difficulty_var.get(), main.win.filter_var.get()], "resources/tasks.json")) if __name__ == "__main__": win = FilterTopWindow() win.mainloop()