Skip to content

akazachkov/P.R.I.S.M.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

P.R.I.S.M. (Platform for Rapid Integrated System Modules)

Приложение для упрощения повседневной рутины, в части работы с файлами, папками и сбора информации из разных источников. Расширение функционала производится подключаемыми модулями.

История изменений

Ключевые концепции.

  1. Разделение ответственности (Separation of Concerns):

app.py - запускает приложение.
main_window.py - отвечает за отрисовку основного окна.
main_module.py - отвечает за отрисовку подключаемых модулей.
module_loader.py - отвечает за сканирование папки modules и создание объектов модулей.
module_api.py - отвечает за API для подклюаемых модулей. app_controller.py - отвечает за управление подключаемыми модулями.
app_config.py - основные настройки приложения.
config_paths_name.toml - пути к папкам и файлам. Наименования для папок и суффиксы для файлов.

  1. Многопоточность:

Главное правило GUI: Никогда не выполняйте "длинные" операции (загрузка файлов, запросы в сеть, сложные вычисления) в основном потоке (thread), в котором работает tkinter. Это "замораживает" интерфейс.
Решение: Для таких задач используется модуль threading. Все операции, которые могут занять время, должны запускаться в фоновом потоке.

  1. Абстракция модулей:

Каждый модуль будет классом, наследуемым от общего абстрактного базового класса BaseModule. Это гарантирует, что все модули имеют одинаковую структуру (name, button_label, button_text, module_label, button_command, initialize_frame) и их можно обрабатывать единообразно.

  1. Динамическая загрузка:

Приложение при старте сканирует папку modules и загружает все Python-файлы (кроме файлов и папок с __ в начале имени). Таким образом, чтобы добавить новую кнопку на вкладку подключаемых модулей, нужно просто положить новый .py файл в папку. Никаких правок в основном коде. В качестве шаблона для нового модуля, можно использовать один из существующих демо-модулей (калькулятор или обновление текста).

About

Переработка ранее созданного инструмента для автоматизации рутины.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages