Разработка кроссплатформенного приложения для получения информации о логических дисках
Е.В. Шрамов , О.Ю. Чередникова
Донецкий национальный технический университет
Аннотация В работе рассмотрены способы разработки кроссплатформенных приложений, выполнен выбор оптимального фреймворка для разработки данного приложения, описаны функциональные возможности фреймворка, а так же описание алгоритма для получения информации о логических дисках.
Ключевые слова: кроссплатформенность, приложение, фреймворк, диск , функция, Python.
Abstract. Development of a cross-platform application for obtaining information about logical disks. The paper considers methods for developing cross-platform applications, selects the optimal framework for developing this application, describes the functionality of the framework, and description of the algorithm for obtaining information about logical disks.
Keywords: cross-platform, application, framework, disk, function, Python.
Общая постановка проблемы и анализ последних исследований
В ходе работы специалистам в различных областях компьютерных технологий, связанных прямо или косвенно с исследованием или разработкой программного обеспечения для операционных систем, часто приходится взаимодействовать с различными файловыми системами и структурами. В связи с этим возникает потребность разбираться в структуре и форме хранения информации на персональном компьютере. Так же необходимо учитывать факт того, что в современном мире с увеличением объема данных и разнообразием платформ, необходимость в кроссплатформенных приложениях становится все более актуальной, так как продукт разработанный под Windows может не запуститься в операционной системе Linux. Данный факт может вынудить разработчиков отдельно создавать приложение под каждую операционную систему, что ведет к прямым временным и финансовым издержкам – решением данной проблемы, как раз таки является кроссплатформенное приложение.
Способы создания кроссплатформенных приложений
Разработка кроссплатформенных приложений включает в себя несколько подходов и технологий. Вот основные способы:
- Гибридные приложения(рисунок 1):
Рисунок 1 – Гибридные приложения- Используют HTML, CSS и JavaScript веб-технологии для создания приложений, которые работают внутри веб интерфейса.
- Фреймворки для кроссплатформенной разработки:
- React Native: Позволяет создавать мобильные приложения с использованием JavaScript и React. Приложения компилируются в нативный код, что обеспечивает доступ к нативным API и высокую производительность.
- Flutter: Платформа компании Microsoft. Используется стандартный для Enterprise-разработки язык программирования С#, кроссплатформенная среда разработки — Visual Studio. На выходе — нативные приложения для iOS, Android и Windows[1].
- Xamarin: Использует C# и .NET для разработки приложений под iOS и Android. Xamarin позволяет писать общий код для нескольких мобильных платформ, обеспечивая доступ к необходимым компонентам и нативным API.
- Qt: - Фреймворк для разработки кроссплатформенных приложений на C++ и Python. Qt предоставляет инструменты для создания графических интерфейсов и поддерживает различные мобильные и компьютерные платформы.
- Веб-приложения(рисунок 2):
Рисунок 2 – Веб-приложения- Создание адаптивных веб-приложений с использованием фреймворков Angular, Vue.js или React, которые работают в браузерах на различных устройствах.
- Системы на основе виртуальных машин:
- Использование платформ, таких как Java с JavaFX или Kotlin Multiplatform, которые позволяют писать код один раз и запускать его на разных платформах.
В нашем приложении, исходя из требований проекта, целевой аудитории и доступных ресурсов – было принято решение использовать фреймворк на языке Python, а именно PyQt.
Фреймворк PyQt
PyQt — это версия библиотек классов Qt для языка Python, а так же набор инструментального программного обеспечения для создания кроссплатформенных приложений с графическим интерфейсом (GUI)[2]. Ключевыми аспектами Qt являются: кроссплатформенность - Qt позволяет разработчикам писать код один раз и запускать его на различных операционных системах без значительных изменений; модульность - Qt состоит из множества модулей, включая: QtCore, QtGui, QtWidgets, QtQuick, QtNetwork; встроенные инструменты разработки - в комплекте с Qt поставляется Qt Creator — интегрированная среда разработки (IDE), которая упрощает процесс создания приложений.
Плюсами использования данного фреймворка является то, что он обладает:
- Кроссплатформенностью
- Современными интерфейсами
- Хорошей поддержкой комьюнити
- Поддержкой большого количества языков
- Интегрированной системой разработки
- Богатым набором инструментов и модулей(рисунок 3)
Фреймворк PyQt
Алгоритм разработки кроссплатформенного приложения на языке Python с использованием фреймворка PyQt для вывода общей информации о логических дисках включает в себя следующие шаги:
- Установка необходимых кроссплатформенных библиотек PyQt6, PyQt6-tools, shutil – для высокоуровневых операций над файлами, psutil – для получения данных о системе, в нашем случае о дисках, sys - для работы с системными функциями, а так же os – для взаимодействия с операционной системы. А так же выполняем их импорт.
- Создаем класс DiskLister, который наследуется от QWidget – основного класса для графического интерфейса
- Инициализируем пользовательский интерфейс, где с помощью QVBoxLayout, QLabel и QListWidget(рисунок 4) определяем структуру.
Рисунок 4 – Использование класса QListWidget - Вызываем метод list_disks(), в котором в переменную disk_inf c помощью метода disk_partitions()(рисунок 5)
записываем все подключенные разделы диска в виде списка именованных кортежей[3].
Рисунок 5 – Вызов метода disk_partitions()
Затем перебираем каждый кортеж, который соответствует активному логическому диску, в переменные записываем имя диска, его тип, а так же с помощью метода disk_usage() рассчитываем статистику использования диска(рисунок 6).
Добавляем все полученные сведения в список disk_list класса QListWidget.
Разработанное приложение включает в себя следующие функциональные возможности: Вывод имени, статистика использования, а так же типа логического диска на всех операционных системах поддерживаемых Qt.
Пример:
Выведем список логических дисков на устройстве с ОС Windows(рисунок 7).
Запустим приложение на другом устройстве с ОС Linux(рисунок 8).
Заключение
Разработка кроссплатформенного приложения для получения информации о логических дисках представляет собой интересную и полезную задачу, которая была реализована в рамках данного проекта. Использование PyQt и Python позволило добиться возможности запускать приложение на различных операционных системах, приложение обладает интуитивно понятным интерфейсом, а так же актуальной информацией об активных логических дисках. Дальнейшие шаги исследований и разработки приложения включают в себя более углубленное изучение файловой системы ext ОС Linux, добавление более расширенного функционала, а так же оптимизация текущего.
Список литературы
- Кросс-платформенная разработка мобильных приложений [Электронный ресурс], Режим доступа: https://practicum.yandex.ru/blog/krossplatformennaya-razrabotka-mobilnyh-prilozheniy/
- Qt [Электронный ресурс], Режим доступа: https://blog.skillfactory.ru/glossary/qt/
- Psutil documentation [Электронный ресурс], Режим доступа: https://psutil.readthedocs.io/en/latest/index.html