Skip to content

deka4core/QTLiterature

Repository files navigation

Language grade: Python Lines of code

НАЗВАНИЕ ПРОЕКТА

Библиотека электронных книг на PyQt5 "QtLiterature"

ОПИСАНИЕ ПРОЕКТА

• Окно базы данных Это часть приложения QTLiterature, воспользовавшись которой, вы сможете найти нужную книгу. Если Вы нажмете на кнопку поиска с пустым запросом, в окне БД откроется вся доступная таблица. Чтобы открыть нужную книгу вы должны выделить её однократным нажатием на ячейку с ней. Затем необходимо нажать на кнопку “Открыть книгу”. Чтобы открыть справку нажмите кнопку “Справка”. Сменить тему приложения позволяет кнопка ”Сменить тему”. Если Вас не устраивает простой поиск по названию, Вы можете открыть окно доп. параметров. Здесь учитывается жанр и автор произведения. • Окно чтения Это часть приложения QTLiterature, воспользовавшись которой, вы сможете прочитать книгу, поставить закладку, добавить её в список избранных, а также изменить размер текста. Если Вы нажмете на кнопку "Открыть книгу" в окне БД, то она появится в виджете окна чтения. Перелистывать страницы электронной книги можно простыми нажатиями по кнопкам "Следующая страница" и "Предыдущая страница". Если Вы желаете обновить коллекцию книг, Вы можете добавить новые книги, используя окно добавления книг, которое вызывается по нажатии кнопки "Добавить книгу". В появившемся окне необходимо выбрать файл (*.txt), вписать название книги, автора и выбрать жанр книги. После этого в окне БД появится новая книга. Воспользовавшись ползунком над книгой вы можете изменить размер текста. По умолчанию стоит 12.

ПРОГРАММНЫЙ КОД

• Класс виджета-книги Класс виджета-книги содержит следующие методы: • Открыть в PlainText выбранный в БД предмет Открывает файл указанный в колонне "path" БД "books", разделяет файл на части (страницы), содержащие определенное кол-во элементов, и записывает в виджет PyQt PlainTextEdit. • Переворот страницы на следующую • Переворот страницы на предыдущую Обращаются к глобальному списку, содержащему страницы книги, и обновляет страницу на новую • Добавление закладки Записывает в словарь 1 страницу книги и индекс страницы, на которой должна быть закладка • Проверка закладки на странице Если индекс страницы закладки совпал со значением ключа словаря закладок, то показывает её • Перемещение к закладке По нажатии на кнопку проверяет есть ли закладка в этой книге. Если есть, открываем страницу с нужным индексом, иначе ничего не делаем. • Добавление в избранное Обновляет столбец "isFavourite" в БД "books" на противоположное значение.

• Класс закладки Класс закладки содержит визуальные методы: показать закладку, скрыть закладку, инициализация анимаций и стилей. При закрытии окна словарь с закладками с помощью библиотеки Pickle записывает свое сериализованное представление в отдельный бинарный файл bookmarks.bin, а при запуске Pickle читает упакованное представление объекта из открытого файлового объекта и возвращает указанное содержимое, которое затем добавляется в пустой словарь BOOKMARKS.

• Класс поиска • Загрузка таблицы Таблица с указанным в файле global_parameters.py названием открывается в PyQt QTableWidget. • Поиск с/без доп. параметров Отправляет SQL-запрос поиска и выводит результат в таблицу. • Отображение окна доп.параметров (содержит ссылку на метод визуала) Открывает окно доп.параметров с помощью основного класса. • Отображение избранных Отправляет SQL-запрос по колонне "isFavourite" в БД "books" и выводитрезультат в таблицу QTableWidget.

• Класс визуала • Установка стилей Устанавливает StyleSheet для целых окон, используя файл стилей (*.css). • Смена темы Меняет используемый файл стилей на другой. • Отслеживание событий

• Класс дополнительных параметров поиска содержит следующие методы: • Создание SQL-запроса Создает SQL-запрос с выбранными параметрами и сохраняет его глобальную переменную после выхода их окна. • Загрузка SQL-запроса при повторном входе в окно Загружает SQL-запрос из глобальной переменной. • Сброс значений Сбрасывает показания на стандартные. • Закрытие окна

• Класс Push-уведомлений • Инициализация Инициализация анимаций и стилей

ИНТЕРЕСНЫЕ МОМЕНТЫ

Интересные моменты, на которых стоит заострить внимание:

• Реализация анимаций
     Анимации были реализованы с помощью QPropertyAnimation.
     QPropertyAnimation это интерфейс, построенный на свойствах, которые помогают с легкостью анимировать Ваш виджет. Используя его, мы можем инициировать анимацию в нужный момент, с опредеденной скоростью и задав необходимую кривую QEasingCurve.
     Каждая кривая показывает отношение значение к времени анимации, т.е. они показывают как анимация будет изменять своё поведение.
     Кроме кривых, из действительно интересных возможностей можно выделить объединение анимаций в группы.

• Реализация стилей
     Две темы содержатся в отдельных сss-файлах. При запуске текст из них импортируется в StyleSheet окон.

НЕОБХОДИМЫЕ МОДУЛИ

pip install requirements.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published