Pyuic5 как установить windows

Обновлено: 04.07.2024

Эта статья предназначена для тех, кто только начинает своё знакомство с созданием приложений с графическим интерфейсом (GUI) на Python. В ней мы рассмотрим основы использования PyQt в связке с Qt Designer. Шаг за шагом мы создадим простое Python GUI приложение, которое будет отображать содержимое выбранной директории.

Что нам потребуется

Нам понадобятся PyQt и Qt Designer, ну и Python, само собой.

В этой статье используется PyQt5 с Python 3, но особых различий между PyQt и PySide или их версиями для Python 2 нет.

Windows: PyQt можно скачать здесь. В комплекте с ним идёт Qt Designer.

macOS: Вы можете установить PyQt с помощью Homebrew:

$ brew install pyqt5

Linux: Всё нужное, вероятно, есть в репозиториях вашего дистрибутива. Qt Designer можно установить из Центра Приложений, но PyQt придётся устанавливать через терминал. Установить всё, что нам понадобится, одной командой можно, например, так:

После того как вы закончили с приготовлениями, откройте командную строку/терминал и убедитесь, что вы можете использовать команду pyuic5 . Вы должны увидеть следующее:

Если вы используете Windows, то, скорее всего, путь C:\Python36\Scripts (измените 36 на вашу версию Python) не прописан в вашем PATH . Загляните в этот тред на Stack Overflow, чтобы узнать, как решить проблему.

Дизайн

Основы

Теперь, когда у нас всё готово к работе, давайте начнём с простого дизайна.

Sportmaster Lab , Санкт-Петербург, Липецк, Москва , От 120 000 до 350 000 ₽

Откройте Qt Designer, где вы увидите диалог новой формы, выберите Main Window и нажмите Create.

Создание новой формы в Qt Designer

После этого у вас должна появиться форма — шаблон для окна, размер которого можно менять и куда можно вставлять объекты из окна виджетов и т.д. Ознакомьтесь с интерфейсом, он довольно простой.

Теперь давайте немного изменим размер нашего главного окна, т.к. нам не нужно, чтобы оно было таким большим. А ещё давайте уберём автоматически добавленное меню и строку состояния, поскольку в нашем приложении они не пригодятся.

Все элементы формы и их иерархия по умолчанию отображаются в правой части окна Qt Designer под названием Object Inspector. Вы с лёгкостью можете удалять объекты, кликая по ним правой кнопкой мыши в этом окне. Или же вы можете выбрать их в основной форме и нажать клавишу DEL на клавиатуре.

Удаление ненужных элементов с формы

В итоге мы имеем почти пустую форму. Единственный оставшийся объект — centralwidget , но он нам понадобится, поэтому с ним мы ничего не будем делать.

Теперь перетащите куда-нибудь в основную форму List Widget (не List View) и Push Button из Widget Box.

Макеты

Вместо использования фиксированных позиций и размеров элементов в приложении лучше использовать макеты. Фиксированные позиции и размеры у вас будут выглядеть хорошо (пока вы не измените размер окна), но вы никогда не можете быть уверены, что всё будет точно так же на других машинах и/или операционных системах.

Макеты представляют собой контейнеры для виджетов, которые будут удерживать их на определённой позиции относительно других элементов. Поэтому при изменении размера окна размер виджетов тоже будет меняться.

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

Предпросмотр формы, созданной без использования макетов

Теперь в меню Qt Designer нажмите Form, затем выберите Preview и увидите что-то похожее на скриншот выше. Выглядит хорошо, не так ли? Но вот что случится, когда мы изменим размер окна:

Проблема при изменении размера окна

Наши объекты остались на тех же местах и сохранили свои размеры, несмотря на то что размер основного окна изменился и кнопку почти не видно. Вот поэтому в большинстве случаев стоит использовать макеты. Конечно, бывают случаи, когда вам, например, нужна фиксированная или минимальная/максимальная ширина объекта. Но вообще при разработке приложения лучше использовать макеты.

Основное окно уже поддерживает макеты, поэтому нам ничего не нужно добавлять в нашу форму. Просто кликните правой кнопкой мыши по Main Window в Object Inspector и выберите Lay outLay out vertically. Также вы можете кликнуть правой кнопкой по пустой области в форме и выбрать те же опции:

Вертикальное расположение виджетов

Ваши элементы должны быть в том же порядке, что и до внесённых изменений, но если это не так, то просто перетащите их на нужное место.

Так как мы использовали вертикальное размещение, все элементы, которые мы добавим, будут располагаться вертикально. Можно комбинировать размещения для получения желаемого результата. Например, горизонтальное размещение двух кнопок в вертикальном будет выглядеть так:

Горизонтальное размещение двух кнопок в вертикальном

Если у вас не получается переместить элемент в главном окне, вы можете сделать это в окне Object Inspector.

Последние штрихи

Теперь, благодаря вертикальному размещению, наши элементы выровнены правильно. Единственное, что осталось сделать (но не обязательно), — изменить имя элементов и их текст.

В простом приложении вроде этого с одним лишь списком и кнопкой изменение имён не обязательно, так как им в любом случае просто пользоваться. Тем не менее правильное именование элементов — то, к чему стоит привыкать с самого начала.

Свойства элементов можно изменить в разделе Property Editor.

Подсказка: вы можете менять размер, передвигать или добавлять часто используемые элементы в интерфейс Qt Designer для ускорения рабочего процесса. Вы можете добавлять скрытые/закрытые части интерфейса через пункт меню View.

Нажмите на кнопку, которую вы добавили в форму. Теперь в Property Editor вы должны видеть все свойства этого элемента. В данный момент нас интересуют objectName и text в разделе QAbstractButton . Вы можете сворачивать разделы в Property Editor нажатием по названию раздела.

Измените значение objectName на btnBrowse и text на Выберите папку.

Должно получиться так:

Изменение названия и текста кнопки

Именем объекта списка является listWidget , что вполне подходит в данном случае.

Сохраните дизайн как design.ui в папке проекта.

Превращаем дизайн в код

Конечно, можно использовать .ui -файлы напрямую из Python-кода, однако есть и другой путь, который может показаться легче. Можно конвертировать код .ui -файла в Python-файл, который мы потом сможем импортировать и использовать. Для этого мы используем команду pyuic5 из терминала/командной строки.

Чтобы конвертировать .ui -файл в Python-файл с названием design.py , используйте следующую команду:

Пишем код

Теперь у нас есть файл design.py с нужной частью дизайна нашего приложения и мы начинать работу над созданием его логики.

Создайте файл main.py в папке, где находится design.py .

Используем дизайн

Для Python GUI приложения понадобятся следующие модули:

Также нам нужен код дизайна, который мы создали ранее, поэтому его мы тоже импортируем:

Так как файл с дизайном будет полностью перезаписываться каждый раз при изменении дизайна, мы не будем изменять его. Вместо этого мы создадим новый класс ExampleApp , который объединим с кодом дизайна для использования всех его функций:

В этом классе мы будем взаимодействовать с элементами интерфейса, добавлять соединения и всё остальное, что нам потребуется. Но для начала нам нужно инициализировать класс при запуске кода. С этим мы разберёмся в функции main() :

И чтобы выполнить эту функцию, мы воспользуемся привычной конструкцией:

В итоге main.py выглядит таким образом:

Если запустить этот код: $ python3 main.py , то наше приложение запустится!

Запущенная программа

Но нажатие на кнопку ничего не даёт, поэтому нам придётся с этим разобраться.

Добавляем функциональность в наше Python GUI приложение

Примечание Весь дальнейший код пишется внутри класса ExampleApp .

Начнём с кнопки Выберите папку. Привязать к функции событие вроде нажатия на кнопку можно следующим образом:

Добавьте эту строку в метод __init__ класса ExampleApp , чтобы выполнить привязку при запуске приложения. А теперь взглянем на неё поближе:

  • self.btnBrowse : здесь btnBrowse — имя объекта, который мы определили в Qt Designer. self говорит само за себя и означает принадлежность к текущему классу;
  • clicked — событие, которое мы хотим привязать. У разных элементов разные события, например, у виджетов списка есть itemSelectionChanged и т.д.;
  • connect() — метод, который привязывает событие к вызову переданной функции;
  • self.browse_folder — просто функция (метод), которую мы описали в классе ExampleApp .

Для открытия диалога выбора папки мы можем использовать встроенный метод QtWidgets.QFileDialog.getExistingDirectory :

Если пользователь выберет директорию, переменной directory присвоится абсолютный путь к выбранной директории, в противном случае она будет равна None . Чтобы не выполнять код дальше, если пользователь закроет диалог, мы используем команду if directory: .

Для отображения содержимого директории нам нужно импортировать os :

И получить список содержимого следующим образом:

Для добавления элементов в listWidget мы используем метод addItem() , а для удаления всех элементов у нас есть self.listWidget.clear() .

В итоге функция browse_folder должна выглядеть так:

Теперь, если запустить приложение, нажать на кнопку и выбрать директорию, мы увидим:

Готовое графическое приложение (Python GUI), отображающее содержимое папки со своим исходным кодом

Так выглядит весь код нашего Python GUI приложения:

Это были основы использования Qt Designer и PyQt для разработки Python GUI приложения. Теперь вы можете спокойно изменять дизайн приложения и использовать команду pyuic5 без страха потерять написанный код.

Здравствуйте.
Только начинаю изучать питон. Использую для этого PyCharm. Хочу создать графический интерфейс. Погуглив нашёл сразу несколько мануалов, но ни один из них не смог выполнить до конца. Понял, что мне нужен PyQt5. И вроде как установил его. Ну, по крайней мере при попытке выполнить команду sudo pip3 install pyqt5 я получаю в ответ Requirement already satisfied: pyqt5 in /usr/lib/python3/dist-packages (5.12.3)

Далее мануалы разнились (в общем-то, даже команда по установке разнилась), но вроде как мне надо установить графические инструменты с помощью команды pip3 install pyqt5-tools. Вот это уже не выходит. Could not find a version that satisfies the requirement pyqt5-tools (from versions: )
No matching distribution found for pyqt5-tools

В общем, я уже запутался с тем, что мне вообще надо, а что не надо, пожалуйста, скажите по шагово, что мне надо сделать, чтобы получить возможность работать с графическими интерфейсами.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь


Установка PyQt5
Здравствуйте. Я бы хотел узнать как установить PyQt5 в питон 3. Обыскал уже весь интернет и во всех.


Установка PyQt5
Не могу установить PyQt5. Скачал с официального сайта и запустил файл "configure.py". Появилось и.

Установка PyQT5 в виртуальное окружение (Debian)
Всем доброго времени суток! Создал виртуальное окружение с помощью virtualenv с Python3.4 и.

PyQt5 Error while finding module specification for 'PyQt5.uic.pyuic' (ModuleNotFoundError: No module named 'PyQt
В общем поставил pyqt5 и python3.7 пишу в консоль python -m PyQt5.uic.pyuic Выдает ошибку Error.

FaceHoof, первое, что Вам необходимо сделать:
- проверить правильность установки, это можно сделать с использованием следующих инструкций в IDLE (не терминале (не в интерактивном режиме) и не PyCharm)
>>> from PyQt5 import QtCore
>>>QtCore.PYQT_VERSION_STR
Здесь должен быть отражен номер версии пакета PyQt5
>>>QtCore.QT_VERSION_STR
Здесь версия QT

Добавлено через 4 минуты

Could not find a version that satisfies the requirement pyqt5-tools (from versions: )
No matching distribution found for pyqt5-tools

Проще удалить PyQt5 командой:
pip3 uninstall pyqt5

И установить заново:
pip3 install pyqt5

Добавлено через 4 минуты

Далее pip3 install pyqt5-tools. Или действия аналогичные выше сказанному в случае возникновения проблем. Возможно потребуется обновить сам пакет pip командой python -m pip install --upgrade pip (или pip3)

Данная библиотека необходима так как в составе последних версий PyQt отсутствует "Дизайнерский пакет" QtDesigner.

Добавлено через 5 минут
Ну и экспериментируйте, читайте в Python это позволительно и удачи. Если что-то не получается или у Вас unix или mac, возможно, потребуются другие действия. Так же многое зависит от 32 или 64 битной версии python.

Установка и настройка PyCharm Qt Designer + PyUIC tutorial

Qt Designer используется для перетаскивания и разработки элементов управления, таких как MFC в VC ++.

PyUIC используется для преобразования файла .ui, созданного Qt Designer, в файл .py.

И Qt Designer, и PyUIC включены в PyQt5, поэтому нам нужно только установить блок PyQt5, а затем указать Qt Designer и PyUIC.

Во избежание слишком долгой работы в этой статье рассказывается только об установке и настройке, использование может просматривать "PyCharm + QTDesigner + PyUIC учебник”

Во-первых, установите PyQt5

Qt Designer включен в PyQt5, а PyQt5 - это модуль python, поэтому мы можем установить его напрямую через «pip3 install PyQt5».

Но здесь мы используем интегрированную среду разработки PyCharm, поэтому устанавливаем напрямую через PyCharm.

Откройте PyCharm и создайте новый проект





Во-вторых, укажите Qt Designer и PyUIC


Имя - введите имя последнего инструмента, который вы хотите отобразить в меню, например, я назвал его здесь QTDesigner

Расположение Program - designer.exe находится в Lib \ site-packages \ pyqt5-tools \ designer.exe текущего парсера.

Рабочий каталог - рабочий путь designer.exe, установленный в $ ProjectFileDir $


Аналогичным образом добавьте PyUIC,

Программа ---- PyUIC находится в Scripts \ pyuic5.exe текущего парсера

Arguments----$FileName$ -o $FileNameWithoutExtension$.py



Вернувшись к основному интерфейсу «Инструменты» - «Внешние инструменты», вы можете увидеть QTDesigner и PyUIC, которые мы добавили.


Интеллектуальная рекомендация

Поверните строку в целые числа

Тема Описание Преобразуйте строку в целое число (реализация функции integer.valueof (строка), но строка не совпадает 0), требуя функции библиотеки, которая нельзя использовать для преобразования целых.

Docker создает репликацию Redis Master-Slave

Centos установить докер быстрый старт докера Создать Dockerfile Поместите файл на сервер Linux, создайте папку / usr / docker / redis и поместите его в этот каталог Выполните следующий код в каталоге .


Установка GateOne на новом CentOS7

Установка GateOne на новом CentOS7 В последнее время исследуются такие инструменты, как WebSSH2, в настоящее время требуется встроить терминал ssh в веб-приложение и найти GateOne. GateOne - это веб-в.


Примечания к исследованию Qt4 (5), QWaitCondition of QThread Learning


Практические занятия: решения проблем системы управления обучением

Сразу после получения задания будет много трудностей и много проблем. Хорошо иметь проблему, а это значит, что вы можете получить новые знания. Неважно, есть ли проблемы, ключ в том, как их решить. пр.

Вам также может понравиться


искробезопасная практика (5) обратный индекс

задний план Поисковые системы обычно создают инвертированный индекс ключевых слов. Ключевое слово - индекс, за которым следуют веб-страницы, содержащие ключевое слово. На этот раз, используя данные мо.


Решение центра тяжести неправильного многоугольника

Справочник статей Во-первых, решение центра тяжести неправильных многоугольников 1.1 Метод расчета треугольника центра тяжести 1.2 Метод расчета площади треугольника 1.3 Метод расчета площади полигона.

и когда я выполнить команда python configure.py --verbose :

добавил C:Program Files (x86)Microsoft Visual Studio 11.0VCbin (содержит nmake.exe ) к пути и я получил эту ошибку:

самый простой способ установить PyQt просто использовать установщик (ссылка в вашем ответе, Шаг № 5). Если вы установите python 3.3, программа установки автоматически добавит все дополнения PyQt5 к этой установке python. Вам не нужно будет делать компиляцию (ни один из: nmake, nmake install, python configure).

все параметры сборки доступны, если вам нужна пользовательская установка (например, с использованием другой версии python, где нет установщика, предоставленного riverbank computing).

Если вам нужно скомпилировать свою собственную версию PyQt5, шаги (как вы нашли) являются здесь, но предположим, что у вас установлен python и компилятор и на вашем пути. Установленные и на вашем пути были там, где вы столкнулись с проблемами, кажется. Я бы рекомендовал использовать версию установщика, но вам нужно установить python 3.3 первый.

в основном, я использую следующую команду под cmd

и все работает без проблем!

я нашел частичное решение.

шаги по установке pyQt5 (с VS 2012) на Windows:

1) Установите двоичный файл Qt 5.0.2 for Windows 64-bit (VS 2012, 500 MB) С здесь.

2) Get sip-4.14.7 (моментальный снимок разработки) из здесь.

3) извлеките файл и откройте Developer Command Prompt for VS2012 .

4) выполните следующие команды (в папке sip):

5) получаем pyQt5 С здесь.

6) экстракт файл и откройте VS2012 x64 Native Tools Command Prompt .

7) выполните следующие команды:

обновление: при выполнении этих команд ниже не работает:

решение: я попробую использовать pyQt4 с Qt5. потому что pyQt5 находится в разработке и еще не имеет поддержки/документации.

сначала попробуйте это в окне cmd Windows:

если это будет успешным, это будет выглядеть примерно так:

если это не сработало, вы можете попробовать эту ссылку из SourceForge.

как найти установщик, который подходит именно вам?

во-первых, определите, какая версия Python у вас есть и есть ли у вас 32-разрядный или 64-разрядный Python. Следующий, откройте один из каталогов. Я на Python 3.5 64-бит, поэтому я ищу .exe с этими спецификациями. Когда вы откроете каталог на SourceForge, вы увидите некоторые каталоги только с .zip или .смола.gz. Это не то, что ты ищешь. Хорошее указание на то, какой каталог вы должны щелкнуть, дается столбцом "загрузки / неделя". Я открою PyQt-5.6

одним из самых (вероятно, самых) простых способов установки пакетов сайтов, таких как PyQt5, является установка одной из версий Anaconda. Вы можете просто установить многие из site-packages, установив его. Список доступных сайтов-пакетов с версиями Anaconda можно проверить здесь.

  1. Dowload Anaconda3 или Anaconda2
  2. установить его.
  3. добавьте путь PyQt5 внутри установки Anaconda в вашу системную среду Переменная.

Я новичок как в Python, так и в PyQt5. Я попытался использовать pip, но у меня были проблемы с ним, используя машину Windows. Если у вас есть версия Python 3.4 или выше, pip установлен и готов к использованию следующим образом:

Это, конечно, предполагая, что путь для исполняемого файла Python находится в переменной среды PATH. В противном случае включите полный путь к исполняемому файлу Python (вы можете ввести where python в окно команды, чтобы найти его), как:

В этом руководстве по PyQt5 будет показано, как использовать Python 3 и Qt для создания графического интерфейса пользователя в Windows, Mac или Linux. Мы даже расскажем, как самостоятельно написать установщик.

Что такое PyQt5?

PyQt5 это самая последняя, пятая версия Qt. Еще можно найти в интернете случайное упоминание PyQt4, но эта версия устарела и больше не поддерживается.

Установка PyQt

Для создания виртуальной среды в текущем каталоге выполните следующую команду:

Эта команда создаст директорию venv/ . Чтобы активировать виртуальную среду в Windows, выполните следующую команду:

А для Mac и Linux вот эту:

То, что виртуальная среда активирована, вы можете увидеть по префиксу (venv) в командной строке:


Теперь, чтобы установить PyQt, выполните следующую команду:

Мы используем версию 5.9.2 , потому что не все версии PyQt одинаково стабильны. Данная версия гарантированно будет работать хорошо.

Итак, поздравляем! Вы только что успешно установили PyQt5.

Создание GUI (графического интерфейса пользователя)

Теперь самое время написать ваш первый графический интерфейс! В нашей виртуальной среде запустим Python и выполним следующие команды:


Сначала мы загружаем библиотеку PyQt при помощи оператора import :

Затем мы создаем QApplication при помощи следующей команды:

Это обязательное требование библиотеки Qt: каждое приложение с графическим интерфейсом пользователя должно иметь ровно один экземпляр класса QApplication . До выполнения данной строки многие вещи в Qt просто не работают. Поэтому такая команда будет присутствовать в каждом вашем Qt приложении.

Скобки [] в данной команде представляют аргументы командной строки, переданные приложению. Поскольку наше приложение не использует никаких параметров, мы оставляем скобки пустыми.

Затем мы даем команду вывести это на экран:

Эта команда покажет небольшое окошко (его вид зависит от вашей операционной системы):


Если все это сработало, как ожидалось, тогда супер! Вы только что создали при помощи Python и библиотеки Qt свое первое приложение с графическим интерфейсом.

Виджеты

На следующей картинке показаны наиболее распространенные виджеты Qt:


Они перечислены ниже в порядке сверху вниз и слева направо:

Отсюда вы можете загрузить, если хотите, код приложения, которое создает такое окно.

Макеты

Как и в приведенном выше примере, ваш графический интерфейс, скорее всего, будет состоять из нескольких виджетов. В этом случае вам нужно указать Qt, как их расположить. Например, вы можете использовать QVBoxLayout для вертикального расположения виджетов:


Вот код, создающий интерфейс, изображенный на картинке выше:

Как и ранее, мы создали экземляр класса QApplication . Затем мы создаем само окно ( window ). Мы используем для него самый простой тип QWidget , так как он просто используется как контейнер, а никакого особого поведения нам задавать не нужно. Затем мы создаем макет ( layout ) и добавляем к нему две кнопки QPushButton . Наконец, мы говорим окну использовать именно этот макет (и, следовательно, его содержимое). Как и в нашем первом приложении, мы заканчиваем вызовами методов .show () и app.exec_ () .

Безусловно, существует большое количество разных макетов, например QHBoxLayout для размещения элементов в ряд. Более подробно с ними можно ознакомиться в документации Qt.

Пользовательские стили

Одной из сильных сторон Qt является поддержка пользовательских стилей. Существует множество механизмов, позволяющих настраивать внешний вид вашего приложения. В этом разделе описаны некоторые из них.

Встроенные стили


Здесь используется стиль под названием Fusion . Если вместо этого использовать стиль Windows , это будет выглядеть следующим образом:


Чтобы применить стиль, нужно использовать метод app.setStyle (…) :

Доступные стили зависят от вашей платформы, но обычно они включают в себя «Fusion», «Windows», «WindowsVista» (только для Windows) и «Macintosh» (только для Mac).

Пользовательские цвета

Если вам нравится стиль, но вы хотите изменить его цвета (например, на темную тему), вы можете использовать QPalette и app.setPalette (. ) . Например:

Это изменит цвет текста в кнопках на красный:

Как создать темную тему стиля Fusion, можно посмотреть вот здесь.

Таблицы стилей

В дополнение к вышесказанному вы можете изменить внешний вид своего приложения с помощью таблиц стилей. Это аналог CSS в Qt. Например, мы можем добавить некоторое пространство:


Для получения дополнительной информации о таблицах стилей смотрите документацию Qt.

Сигналы и слоты

Сигналы в Qt используются повсеместно. И, конечно, вы также можете определить свои собственные сигналы. Но это выходит за рамки данного руководства.

Компилируем наше приложение

Теперь у вас есть базовые знания для создания GUI, который реагирует на ввод пользователя. Допустим, вы написали приложение. Оно работает на вашем компьютере. Как передать его другим людям, чтобы они тоже могли его запустить?

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

В мире Python процесс превращения исходного кода в автономный исполняемый файл называется замораживанием (freezing). Несмотря на наличие множества библиотек, решающих эту проблему, например PyInstaller , py2exe , cx_Freeze , bbfreze , py2app и так далее, замораживание приложений PyQt всегда было на удивление непростой проблемой.

Мы будем использовать новую библиотеку под названием fbs , которая позволяет создавать автономные исполняемые файлы для приложений PyQt. Для ее установки введите команду:

Затем выполним следующую команду:

Вам будет предложено ввести несколько значений:


Когда вы введете предложенную команду run , должно открыться пустое окно:


Это приложение PyQt5, такое же, как и те, что мы видели раньше. Его исходный код находится в src/main/python/main.py в вашем текущем каталоге. Но вот что самое интересное: мы можем использовать fbs, чтобы превратить его в отдельный исполняемый файл!

Бонус: создаем установщик

Библиотека fbs также позволяет вам создать установщик для вашего приложения с помощью команды fbs installer :


(Если вы работаете в Windows, вам сначала нужно установить NSIS и поместить путь к нему в свой PATH.)

За дополнительной информацией по использованию библиотеки fbs обратитесь к ее документации.

Итоги

Читайте также: