Как запустить конструктор pyqt5 в Linux

Обновлено: 21.11.2024

Колеса PyQt5 не предоставляют таких инструментов, как Qt Designer, которые были включены в старые бинарные установщики. Этот пакет предназначен для предоставления их в отдельном пакете, который полезен для разработчиков, в то время как официальные колеса PyQt5 по-прежнему сосредоточены на выполнении зависимостей приложений PyQt5.

Установка

Как правило, инструменты pyqt5 устанавливаются с помощью pip install. В большинстве случаев вам следует использовать virtualenv или venv для создания изолированных сред для установки ваших зависимостей. Приведенная выше команда предполагает, что env находится в каталоге yourenv. ~=5.15 указывает выпуск, совместимый с 5.15, который будет последней версией инструментов pyqt5, созданных для PyQt5 5.15. Если вы используете другую версию PyQt5, укажите ее вместо 5.15. PyPI хранит список всех доступных версий.

Примечание. Начиная с pyqt5-tools v3, пакет разбит на четыре части. Обертки остаются здесь, но плагины находятся в pyqt5-plugins, некоторые помощники приложений Qt — в qt5-tools, а приложения — в qt5-applications.

Использование

Программа доступна как Scripts/pyqt5-tools.exe . Для конструктора, сцены QML и средства выполнения тестов QML предусмотрены подкоманды. Эти команды-оболочки предоставляют дополнительные функции, связанные с запуском базовых программ. Большой набор приложений Qt доступен как подкоманды программы Scripts/qt5-tools.exe. В обоих случаях при передаче --help будут перечислены доступные подкоманды.

Кроме того, каждая перечисленная ниже подкоманда pyqt5-tools включает параметр для запуска базового примера, который можно использовать для проверки работоспособности подключаемых модулей. Эти примеры не предназначены для использования в качестве примеров хорошего кода.

Каждая подкоманда просматривает дерево файловой системы из вашего текущего рабочего каталога, чтобы найти файл .env и загружает его, если он найден. Если найдено, переменная среды DOT_ENV_DIRECTORY будет установлена ​​на каталог, содержащий файл .env. С помощью этой дополнительной переменной вы можете указать пути относительно местоположения .env.

Дизайнер

Существует точка входа Scripts/pyqt5-tools.exe Designer.exe, которая поможет заполнить PYQTDESIGNERPATH либо из аргументов командной строки, либо из .env файл. Неизвестные аргументы передаются исходной программе Qt Designer.

Если вы хотите просмотреть сгенерированный код из Designer, вы можете запустить Scripts/pyqt5-tools.exe installuic, и он скопирует pyuic5.exe таким образом, что Designer будет использовать его и покажет вам сгенерированный код Python. Обратите внимание, что это позволит просматривать с помощью пункта меню C++, в то время как пункт меню Python будет нарушен. Без внесения этой корректировки параметр C++ показывает код C++, а параметр Python показывает код PySide2. pyqt5 должен быть уже установлен, иначе этот сценарий не сможет найти исходный файл pyuic5.exe для копирования.

В дополнение к стандартным функциям официального подключаемого модуля Designer он предоставляет диалоговое окно исключений для кода Python вашего виджета. В противном случае Designer в Windows автоматически аварийно завершает работу при исключениях Python.

Подключаемый модуль QML

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

PyQt – это популярная библиотека Python, используемая для упрощения реализации графических приложений на Python. Эта библиотека поставляется с инструментом построения GUI (графического пользовательского интерфейса) под названием Qt Designer. Графический пользовательский интерфейс можно быстро построить на Python с помощью функции перетаскивания этой библиотеки, хотя этот инструмент не имеет средства отладки, как стандартная IDE. В этом руководстве показано, как реализовать графический интерфейс с помощью класса Qt Designer PyQt.

Предпосылки

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

$ sudo apt-get установить qttools5-dev-tools

$ sudo apt-get установить qttools5-dev

Откройте дизайнер Qt

Выполните следующую команду, чтобы изменить текущее расположение каталога на папку Qt Designer.

Выполните следующую команду, чтобы открыть приложение Qt Designer.

Если Qt Designer установлен правильно, появится следующее окно. Поле виджетов, показанное в левой части главного окна, содержит различные виджеты, которые можно использовать для разработки пользовательского интерфейса приложения. Окно «Новая форма» используется для создания нового окна с использованием кнопок по умолчанию. Окна, показанные в правой части главного окна, предоставляют информацию о виджетах, которые можно прочитать или изменить.

Создание первой формы с помощью Qt Designer

Чтобы начать разработку интерфейса для приложения Python, мы нажмем кнопку «Создать» в следующем окне, чтобы открыть диалоговое окно с двумя кнопками по умолчанию.

Далее мы создадим форму входа с помощью виджетов «Ярлык», «Редактирование текста» и «Кнопка». Диалоговое окно будет сохранено под именем Login.ui, которое позже будет использоваться в скрипте Python. Имя QObject будет изменено на Logindialog с помощью окна редактора свойств этого приложения.

Использование диалогового окна входа

Файл пользовательского интерфейса, созданный Qt Designer, можно использовать в сценарии Python двумя способами. Файл можно использовать непосредственно в скрипте Python, или преобразованный файл Python файла Qt Designer можно использовать в скрипте Python. Оба способа использования диалогового окна Qt Designer показаны в следующем разделе руководства.

Запустить файл Qt Designer напрямую

Модуль UIC библиотеки PyQt используется для загрузки файла, созданного Qt Designer, а метод loadUI() модуля UIC используется для загрузки файла пользовательского интерфейса. Следующий сценарий показывает, как загрузить файл Qt Designer с именем Login.ui, который мы создали ранее. Необходимые модули импортируются в начале скрипта. Объект приложения создается с помощью QApplication(), а файл Qt Designer загружается с помощью метода loadUI(). Затем вызывается метод exec() для запуска цикла событий приложения.

из PyQt5 импортировать QtWidgets, uic

приложение = QtWidgets. QApplication ( sys .argv )

окно = uic. loadUi ("Логин.ui")

После выполнения вышеуказанного скрипта появится следующее диалоговое окно.

Запуск файла пользовательского интерфейса путем преобразования в файл Python

Файл пользовательского интерфейса, созданный Qt Designer, можно преобразовать в файл Python с помощью команды pyuic5. Выполните следующую команду, чтобы преобразовать файл Login.ui в файл loginForm.py. Файл Login.ui должен храниться в текущем местоположении, чтобы выполнить следующую команду; в противном случае будет сгенерирована ошибка.

Следующий код будет сгенерирован в файле loginForm.py после выполнения вышеуказанной команды.

из PyQt5 импортировать QtCore, QtGui, QtWidgets


класс Ui_Logindialog (объект):

def setupUi ( self , Logindialog ):

Вход в систему. setObjectName ("Логиндиалог")

Вход в систему. изменить размер ( 400 , 224 )

сам . textEdit = QtWidgets. QTextEdit (Диалог входа)

сам . текстПравить. setGeometry(QtCore. QRect(130, 70, 221, 31))

сам . текстПравить. setObjectName ("textEdit")

сам . textEdit_2 = QtWidgets. QTextEdit (Диалог входа)

сам . текстEdit_2 . setGeometry(QtCore.QRect(130, 120, 221, 31))

сам . текстEdit_2 . setObjectName ("textEdit_2")

сам . метка = QtWidgets. QLabel (Диалог входа)

сам . этикетка . setGeometry(QtCore.QRect(140, 20, 131, 31))

шрифт = QtGui. QFont ( )

шрифт. setPointSize ( 18 )

сам . этикетка . setFont (шрифт)

сам . этикетка . setObjectName ("метка")

сам . label_2 = QtWidgets. QLabel (Диалог входа)

сам . метка_2 . setGeometry(QtCore. QRect(36, 70, 81, 20))

сам . метка_2 . setObjectName ("label_2")

сам . label_3 = QtWidgets. QLabel (Диалог входа)

сам . метка_3 . setGeometry(QtCore. QRect(40, 120, 67, 17))

сам . метка_3 . setObjectName ("label_3")

сам . btnLogin = QtWidgets. QPushButton (Диалог входа)

сам . btnЛогин . setGeometry(QtCore. QRect(150, 170, 89, 25))

сам . btnЛогин . setObjectName ("btnLogin")

сам . btnCancel = QtWidgets. QPushButton (Диалог входа)

сам . btnОтменить . setGeometry(QtCore. QRect(250, 170, 89, 25))

сам . btnОтменить . setObjectName ("btnCancel")


сам . retranslateUi (Диалог входа)

QtCore. QМетаОбъект. connectSlotsByName (Диалог входа)


def retranslateUi (self, Logindialog):

_translate = QtCore. Приложение QCore. перевести

Вход в систему. setWindowTitle(_translate("Логиндиалог", "Диалог"))

сам . этикетка . setText ( _translate ("Логиндиалог", "Форма входа")) )

сам . метка_2 . setText(_translate("Логиндиалог", "Имя пользователя"))

сам . метка_3 . setText(_translate("Логиндиалог", "Пароль"))

сам . btnЛогин . setText(_translate("Логиндиалог", "Логин"))

сам . btnОтменить . setText(_translate("Логиндиалог", "Отмена"))

Следующее покажет диалоговое окно входа в систему, если импортировать файл loginForm.py, созданный с помощью команды pyuic5.Объект приложения создается с помощью QApplication(), а диалоговое окно входа загружается с помощью метода setupUi(). Кнопка «Войти» связана с методом loginClicked() для проверки правильности имени пользователя и пароля, полученных от пользователя. Кнопка Cancel прикреплена к методу cancelClicked() для выхода из приложения. Метод exec() вызывается для запуска цикла событий приложения.

из PyQt5 импортировать QtWidgets

класс MyApp (QtWidgets.QMainWindow, loginForm.Ui_Logindialog):

def __init__ (self, parent = None):

супер ( MyApp , self ) . __init__ (родительский)

сам . setupUi ( сам )

сам . btnЛогин . щелкнул . подключиться ( self . loginClicked )

сам . btnОтменить . щелкнул . подключиться ( self . cancelClicked )

def loginClicked ( сам ) :

если сам . текстПравить. toPlainText ( ) == 'admin' и self . текстEdit_2 . toPlainText ( ) == 'суперпользователь' :

print ('Авторизованный пользователь')

print ('Неаутентифицированный пользователь')

def cancelClicked ( сам ) :

приложение = QtWidgets. QApplication ( sys .argv )

После выполнения вышеуказанного скрипта появится следующее диалоговое окно.


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


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


Если пользователь нажмет кнопку "Отмена" в форме входа, диалоговое окно исчезнет.

Заключение

В этом руководстве показано, как установить Qt Designer и как создать простую форму с помощью этого приложения. В учебнике также показано, как напрямую загрузить диалоговое окно пользовательского интерфейса, и после преобразования его в сценарий Python показано в другой части этого руководства. Надеюсь, эта статья помогла вам лучше понять, как использовать Qt Designer для создания и использования графического интерфейса в приложениях.

Об авторе

Фахмида Есмин

Я веду курсы веб-программирования. Мне нравится писать статьи или учебные пособия на различные темы в области ИТ. У меня есть канал на YouTube, на котором публикуются различные учебные пособия по Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel и т. д.: Справка Tutorials4u.

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

Запуск дизайнера

Способ запуска Qt Designer зависит от вашей платформы:

  • В Windows нажмите кнопку "Пуск", откройте подменю Программы, откройте подменю Qt 4 и нажмите Дизайнер.
  • >
  • В Unix или Linux вы можете найти значок Qt Designer на фоне рабочего стола или в стартовом меню рабочего стола в разделе Программирование или Разработка подменю. С помощью этого значка вы можете запустить Qt Designer. Кроме того, вы можете ввести designer в окне терминала.
  • В Mac OS X дважды щелкните Qt Designer в Finder.

Пользовательский интерфейс

При использовании в качестве автономного приложения пользовательский интерфейс Qt Designer можно настроить для предоставления либо многооконного пользовательского интерфейса (режим по умолчанию), либо его можно использовать в режиме рабочей среды. При использовании из интегрированной среды разработки (IDE) доступен только многооконный пользовательский интерфейс. Для переключения режимов откройте диалоговое окно Настройки (меню Правка).

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

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

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

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

Большинство функций Qt Designer доступны через строку меню, панель инструментов или окно виджета. Некоторые функции также доступны через контекстные меню, которые можно открывать поверх окон формы. На большинстве платформ правая кнопка мыши используется для открытия контекстных меню.

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

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

Qt Designer предоставляет функцию блокнота, позволяющую собирать наиболее часто используемые объекты в отдельной категории. Эта категория будет сохранена для последующего использования при выходе из Qt Designer. Категорию блокнота можно заполнить любым виджетом, отображаемым в данный момент в форме, просто перетащив его из формы в поле виджета. Эти виджеты можно использовать так же, как и любые другие виджеты, но, кроме того, они могут содержать дочерние виджеты. Откройте контекстное меню над виджетом, чтобы изменить его имя или удалить его из блокнота.

До сих пор мы создавали приложения с использованием кода Python. Во многих случаях это прекрасно работает, но по мере того, как ваши приложения становятся больше или интерфейсы усложняются, определение всех виджетов программно может стать немного громоздким. Хорошей новостью является то, что Qt поставляется с графическим редактором — Qt Designer — который содержит редактор пользовательского интерфейса с возможностью перетаскивания. С помощью Qt Designer вы можете визуально определить свои пользовательские интерфейсы, а затем просто подключить логику приложения.

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

Откройте Qt Creator, и вы увидите главное окно. Дизайнер доступен через вкладку слева. Однако, чтобы активировать это, вам сначала нужно начать создавать файл .ui.

Интерфейс Qt Creator с разделом "Дизайн", показанным слева.

Чтобы создать файл .ui, выберите «Файл» -> «Новый файл или проект». В появившемся окне выберите Qt в разделе Файлы и классы слева, затем выберите Форма Qt Designer справа. Вы заметите, что на значке есть "ui", указывающий тип файла, который вы создаете.

Создайте новый файл Qt .ui.

На следующем шаге вас спросят, какой тип виджета вы хотите создать. Если вы запускаете приложение, правильным выбором будет Главное окно. Однако вы также можете создавать файлы .ui для диалоговых окон, форм и пользовательских составных виджетов.

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

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

Выберите имя для сохранения и папку для вашего файла.

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

При желании добавьте файл в систему контроля версий, например. Git.

Разметка главного окна

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

Первоначальный вид созданного главного окна.

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

Первоначальный вид созданного главного окна.

Первым шагом в создании приложения является добавление в окно некоторых виджетов. В наших первых приложениях мы узнали, что для установки центрального виджета для QMainWindow нам нужно использовать .setCentralWidget(). Мы также увидели, что для добавления нескольких виджетов с макетом нам нужен промежуточный QWidget для применения макета, а не непосредственное добавление макета в окно.

Qt Creator позаботится об этом автоматически, хотя это не особенно очевидно.

Чтобы добавить несколько виджетов в главное окно с макетом, сначала перетащите виджеты в QMainWindow. Здесь мы перетаскиваем 3 метки. Неважно, где вы их уроните.

Главное окно с 1 ярлыком и 1 кнопкой.

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

Найдите QMainWindow на правой панели (оно должно быть вверху). Ниже вы видите centralwidget, представляющий центральный виджет окна. Значок центрального виджета показывает текущий примененный макет. Первоначально он перечеркнут красным кружком, показывая, что нет активного макета.

Щелкните правой кнопкой мыши объект QMainWindow и найдите "Макет" в раскрывающемся списке.

Щелкните правой кнопкой мыши главное окно и выберите макет.

Далее вы увидите список макетов, которые можно применить к окну. Выберите Расположить по горизонтали, и макет будет применен к виджету.

Выберите макет для применения к главному окну.

Выбранный макет применяется к центральному виджету окна QMainWindow, а виджеты добавляются к макету в зависимости от выбранного макета. Обратите внимание, что в Qt Creator вы можете перетаскивать и изменять порядок виджетов в макете или выбирать другой макет по своему усмотрению. Это делает особенно удобным создание прототипов и опробование вещей.

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

Использование созданного файла .ui

Мы создали очень простой пользовательский интерфейс. Следующий шаг — перенести это в Python и использовать для создания работающего приложения.

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

Файл .ui имеет формат XML. Чтобы использовать наш пользовательский интерфейс из Python, у нас есть два альтернативных метода —

  1. загружать в класс с помощью метода .loadUI()
  2. преобразовать его в Python с помощью инструмента pyuic5.

Эти два подхода рассматриваются ниже. Лично я предпочитаю конвертировать пользовательский интерфейс в файл Python, чтобы сохранить сходство с точки зрения программирования и упаковки.

Прямая загрузка файла .ui

Для загрузки файлов .ui мы можем использовать модуль uic, включенный в PyQt5, а именно метод uic.loadUI(). Это берет имя файла пользовательского интерфейса и загружает его, создавая полнофункциональный объект PyQt5.

(Очень) простой пользовательский интерфейс, разработанный в Qt Creator

Поскольку метод uid.loadUI() превращает экземпляр объекта, вы не можете прикрепить пользовательский код __init__(). Однако вы можете справиться с этим с помощью пользовательской функции настройки

Чтобы загрузить пользовательский интерфейс из блока __init__ существующего виджета (например, QMainWindow ), вы можете использовать uic.loadUI(filename, self) для PyQt5.

Преобразование файла .ui в формат Python

Чтобы сгенерировать выходной файл Python, запустите pyuic5 из командной строки, передав расширение .ui и целевой файл для вывода с параметром -o. Далее будет сгенерирован файл Python с именем MainWindow.py, который содержит созданный нами пользовательский интерфейс.

Если вы используете PyQt4, инструмент называется `pyuic4`, но в остальном он полностью идентичен.

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

Импорт полученного файла Python работает так же, как и любой другой. Вы можете импортировать свой класс следующим образом. Инструмент pyuic5 добавляет Ui_ к имени объекта, определенного в Qt Creator, и именно этот объект вы хотите импортировать.

Чтобы создать главное окно в приложении, создайте класс как обычно, но в качестве подкласса как QMainWindow, так и импортированного класса Ui_MainWindow. Наконец, вызовите self.setupUi(self) из __init__, чтобы инициировать настройку интерфейса.

Это дает точно такой же результат, как и раньше.

(Очень) простой пользовательский интерфейс, разработанный в Qt Creator

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

Создание приложений с графическим интерфейсом с помощью Python и Qt6
Простой способ создания настольных приложений

Мое полное руководство, обновленное для версии 2021 и PyQt6. Все, что вам нужно для создания реальных приложений.

Загружаемая электронная книга (PDF, ePub) и полный исходный код

Для поддержки разработчиков в [[ countryRegion ]] я даю скидку [[ localizedDiscount[couponCode] ]]% по коду [[couponCode ]] — наслаждайтесь!

Для [[ activeDiscount.description ]] я даю скидку [[ activeDiscount.discount ]]% с кодом [[КупонКод ]] — наслаждайтесь!

Добавление логики приложения

Вы можете взаимодействовать с виджетами, созданными с помощью Qt Creator, так же, как и с виджетами, созданными с помощью кода. Для упрощения uic добавляет все дочерние виджеты в объект окна по их имени идентификатора, как указано в Qt Creator. В следующей части мы расскажем, как с ними работать.

Если вы нашли это руководство полезным, поделитесь им со своей сетью.
Ваша поддержка помогает мне продолжать писать эти руководства. Спасибо!

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