Всем привет! В данном цикле статей я бы хотел рассказать и показать процесс разработки приложения с графическим интерфейсом на Python.
Разрабатывать приложение мы будем на Astra Linux (да, я прям прикипел к этому дистрибутиву, люблю, знаете ли, извращения). Пройдем с вами путь от постановки задачи, проектирования БД, планирования интерфейса и до создания исполняемого файла. В данной статье мы опишем задачу и подготовим необходимое для начала разработки ПО. Сразу оговорюсь, писать исходный код мы будем в VS Code, как его установить в Astra Linux, я рассказывал в одной из своих недавних статей.
Постановка задачи
Разработать кроссплатформенное приложение с графическим интерфейсом для ведения личного дневника. Интерфейс должен быть приятным и интуитивно понятным. Данные приложения должны храниться в базе данных SQLite. Записи дневника должны быть разделены по категориям, иметь пометки даты и теги. Дополнительно рассмотреть возможность прикрепления к записи изображений.
И так, хорошо поставленная задача, это уже почти пройденные пол пути к решению задачи. Данные дневника должны храниться в базе данных. Для хранения данных мы будем использовать SQLite. Это компактная встраиваемая система управления базами данных, которая позволяет создавать базы данных без отдельного сервера. Это нам отлично подходит. Для того, чтобы было удобнее работать с базами данных формата SQLite, давайте установим на наш многострадальный дистрибутив SQLite Studio.
Установка SQLite Studio
Заходим на официальный сайт SQLite Studio, ссылку я оставил выше, и нажимаем на кнопку Download. Там не нужно выбирать для какой конкретно операционки мы скачиваем, скрипт на сайте сделает это за вас.
По итогу у вас должен загрузиться установщик формата .run.
Для того, чтобы запустить установщик такого формата, для начала потребуется выдать ему разрешения на исполнение. Для этого открываем терминал и переходим в папку, в которую вы загрузили установочный файл, в моем случае это папка Загрузки.
cd /home/<имя_пользователя>/Загрузки
Далее предоставляем файлу права на выполнение
chmod +x <имя_файла>.run
И запускаем сразу в терминале файл установщика от имени администратора
sudo ./<имя_файла>.ru
После выполнения всех вышеописанных команд откроется окно установщика.
Далее выполняем все инструкции, выбираем папку для установки и ждем окончания процесса распаковки новых файлов. И казалось бы, что после окончания процесса установки, с поставленной галочкой Launch SQLiteStudio now сама студия должна запуститься, но этого не происходит.
Если вкратце, то проблема снова в старой версии библиотеки libc6, для работы студии требуется хотя бы версия 2.29, но как мы помним из статьи про установку VS Code, то в системе установлена версия 2.24.
Чтобы наверняка убедиться в том, что проблема именно в версии библиотеки, переходим в директорию куда была установлена студия и заходим в папку lib. Далее у библиотек libcore* проверяем список зависимостей, сделать это можно командой ldd (list dynamic dependencies).
cd /<папка_куда_распоковалась_сутидия>/lib
ldd libcore*
Опять двадцать пять, как говориться. Но не беда, удаляем эту директорию, она нам не понадобиться более. Переходим в домашний каталог и пишем следующую команду:
cd /home/<имя_пользователя>
sudo rm -rf /<папка_куда_распоковалась_сутидия>
Переходим к тактике "старых версий". Скачиваем с официального сайта версию студии и скачиваем более старую версию. Я выбрал 3.3.3.
Скачиваем этот архив и распаковываем куда вам нравиться, я к примеру распаковал в домашнюю директорию, да это плохо, в дальнейшем перенесу в другое место. А пока что, заходим в распакованную папку и видим там исполняемый файл (sqlitestudio), это и есть SQLiteStudio
Давайте попробуем его запустить через терминал. Для этого перейдите в терминале в это папку, у меня это
cd /home/<имя_пользователя>/SQLiteStudio
./sqlitestudio
И после попытки запуска, может, а точнее даже вероятнее всего произойдет следующая ошибка:
Could not load the Qt platform plugin. До боли знакомая мне ошибка. В одной из своих прошлых статей я уже описывал как от нее избавиться.
Вся проблема в том, что Qt, на которой сделан графический интерфейс студии, не может найти путь к библиотекам платформы. Как говориться, давайте поможем Qt свои библиотеки найти:
export QT_QPA_PLATFORM_PLUGIN_PATH=$PATH:<папка_студии>/platforms
export QT_PLUGIN_PATH=$PATH:<папка_студии>/platforms
Но после попытки запуска, снова появиться похожая ошибка, только вот уже с прописанными путями.
Не беда, мы с вами уже научились проверять динамические зависимости, давайте это сделаем для той самой библиотеки в папке platforms.
Отсутствует одна библиотека. Но вот только проблема в том, что она есть, только называется по другому. Давайте поступим интересным способом, я про него писал в предыдущей своей статье, и созданим символическую ссылку на уже имеющийся файл libxcb-util.so.0
sudo ln -s /usr/lib/x86_64-linux-gnu/libxcb-util.so.0 /usr/lib/x86_64-linux-gnu/libxcb-util.so.1
После всех этих проделанных манипуляций, студия успешно стартует и попросит выбрать язык
После выбора, запуститься и сама студия
Вот мы и установили SQLiteStudio в Astra Linux! Это только начало длинного пути по разработке приложения. Подписывайтесь, будет интересно!
Спасибо за прочтение! Всем удачных установок!