Учебное пособие по PyQt5 с примерами: Создание Python Графический пользовательский интерфейс с использованием Qt

⚡ Умное резюме

PyQt — это Python Привязка для кроссплатформенного набора виджетов Qt, позволяющая разработчикам создавать нативные графические интерфейсы для настольных приложений. Она включает в себя более шестисот таких оберток. C++ классы, охватывающие окна, кнопки, макеты, сигналы, слоты и темы для Windows, macOS, и Linux.

  • 🔘 Что такое PyQt: A Python привязка для Qt C++ Системная среда, поддерживаемая компанией Riverbank Computing.
  • ☑️ Версии: PyQt4 работает с Qt 4.x и 5.x; PyQt5 ориентирован только на серию Qt 5.x.
  • Установка: Менеджер пакетов pip устанавливает PyQt5 из wheel-пакета одной командой.
  • 🧪 Первое приложение: QApplication и QWidget создают и отображают на экране базовое окно.
  • 🇧🇷 Signalслоты и игровые автоматы: События виджета генерируют сигналы, которые устанавливают соединение с Python функции слотов.
  • 🤖 Готовность к ИИ: PyQt создает настольные интерфейсы для запуска и визуализации моделей машинного обучения.

PyQt5 Учебник

В разделах ниже вы найдете информацию об основах PyQt, установке, основных виджетах, макетах и ​​темах, а также примеры их работы.

Что такое PyQt?

PyQt - это Python привязка набора инструментов для виджетов с открытым исходным кодом Qt, который также функционирует как среда разработки кросс-платформенных приложений. Qt — популярный C++ Фреймворк для написания графических приложений для всех основных настольных, мобильных и встроенных платформ (поддерживает Linux). Windows, macOS, Android, iOS, Raspberry Pi и другие).

PyQt — это свободное программное обеспечение, разработанное и поддерживаемое компанией Riverbank Computing, расположенной в Англии, тогда как Qt разрабатывается финской фирмой The Qt Company.

Особенности PyQt

Вот важные особенности PyQt:

PyQt включает в себя более шестисот классов, охватывающих широкий спектр возможностей, таких как:

  • Графические пользовательские интерфейсы
  • Базы данных SQL
  • Веб-инструментарии
  • Обработка XML
  • Networking

Эти функции можно комбинировать для создания как сложных пользовательских интерфейсов, так и автономных приложений. Qt используют многие крупные компании во всех отраслях. В качестве примеров можно привести LG, Mercedes, AMD, Panasonic и Harman.

Версии PyQt

PyQt доступен в двух версиях: PyQt4 и PyQt5. PyQt4 предоставляет связующий код для привязки версий фреймворка Qt 4.x и 5.x, в то время как PyQt5 предоставляет привязку только для версий 5.x. В результате PyQt5 не обратно совместим с устаревшими модулями более старой версии. В этом руководстве по графическому интерфейсу пользователя PyQt для демонстрации примеров будет использоваться PyQt5. Помимо этих двух версий, Riverbank Computing также предоставляет PyQt3D — Python привязки для фреймворка Qt3D. Qt3D — это прикладная среда, используемая для создания систем моделирования в реальном времени с 2D/3D-рендерингом.

Как установить PyQt5

В этом руководстве по PyQt5 мы увидим два способа установки PyQt:

  • Использование файлов Wheel
  • Сборка и установка из исходного кода

Qt (произносится как «кьют») — сложная система, а кодовая база PyQt содержит скомпилированные C++ и Python код под капотом. В результате его сборка и установка из исходного кода является более сложным процессом по сравнению с другими Python библиотеки. Однако вы можете легко установить PyQt5 с помощью колес.

Установка с колесами

Колеса — новый стандарт Python Формат упаковки и распространения. Проще говоря, колесо — это ZIP-архив со специальным именем и .Whl расширение файла. Колеса можно установить с помощью пипа (Pythonменеджер пакетов), который включен по умолчанию в последние версии Python.

Итак, если у вас есть Python 3.4 или более поздняя версия установлена, у вас уже есть pip. Если же вы используете более старую версию PythonДля продолжения необходимо загрузить и установить pip. Инструкции можно найти по этой ссылке: https://pypi.org/project/pip/.

Для установки pyQt5:

Шаг 1) Откройте командную строку.
Откройте командную строку или PowerShell в своем Windows машина.

установить PyQt5

Шаг 2) Введите следующее.

 pip install PyQt5

Шаг 3) Установка прошла успешно.
На этом этапе этого руководства по PyQt5 вы загрузите пакет PyQt5 whl (около 50 МБ) и установите его в вашей системе.

установить PyQt5

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

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

Базовый PyQt Concepts и программы

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

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

Зажгите свой Python IDLE и введите следующее:

Программа 1

import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(300,300)
    w.setWindowTitle("Guru99")
    w.show()
    sys.exit(app.exec_())

Сохраните файл как app.py (имя не имеет значения) и нажмите F5, чтобы запустить программу. В качестве альтернативы, просто дважды щелкните сохраненный файл, чтобы запустить приложение. Если вы все сделали правильно, откроется новое окно с заголовком Guru99, как показано ниже.

Базовый PyQt Concepts

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

from PyQt5.QtWidgets import QApplication, QWidget

Этот оператор импортирует все модули, необходимые для создания графического интерфейса, в текущее пространство имен. Модуль QtWidgets содержит все основные виджеты, которые вы будете использовать в этом уроке. Python Учебник по Qt.

app = QApplication(sys.argv)

Здесь вы создаете объект класса QApplication. Этот шаг необходим для PyQt5; каждое приложение пользовательского интерфейса должно создать экземпляр QApplication как своего рода точку входа в приложение. Если вы его не создадите, будут показаны ошибки.

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

В этом примере на PyQt5 вы не передавали никаких аргументов в QApplication. Поэтому вы можете заменить его приведенным ниже кодом, и вам даже не придется импортировать модуль sys.

app = QApplication([])
w = QWidget()

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

w.resize(300,300)

Метод resize класса QWidget позволяет вам установить размеры любого виджета. В данном случае вы изменили размер окна до 300 на 300 пикселей.

Здесь следует помнить, что виджеты могут быть вложенными друг в друга; самый внешний виджет (то есть виджет, не имеющий родительского элемента) называется окном.

w.setWindowTitle("Guru99")

Метод setWindowTitle() позволяет передавать строку в качестве аргумента, которая установит заголовок окна в соответствии с переданной строкой. В примере PyQt5 в заголовке окна будет отображаться Guru99.

w.show()

show() просто отображает виджет на экране монитора.

sys.exit(app.exec_())

Метод app.exec_() запускает Qt/C++ цикл событий. Как вы знаете, PyQt в основном написан на C++ и использует механизм цикла событий для реализации параллельного выполнения. Метод `app.exec_()` передает управление Qt, который завершит работу приложения только тогда, когда пользователь закроет его из графического интерфейса. Именно поэтому сочетание клавиш Ctrl+C не завершит работу приложения, как в других случаях. Python программы. Поскольку Qt контролирует приложение, Python события не обрабатываются, если мы не настроим их внутри приложения. Также обратите внимание, что в названии метода exec есть подчеркивание; это потому, что exec() уже было ключевым словом в Python А нижнее подчеркивание разрешает конфликт имен.

За пустыми окнами

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox

def dialog():
    mbox = QMessageBox()

    mbox.setText("Your allegiance has been noted")
    mbox.setDetailedText("You are now a disciple and subject of the all-knowing Guru")
    mbox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
            
    mbox.exec_()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(300,300)
    w.setWindowTitle("Guru99")
    
    label = QLabel(w)
    label.setText("Behold the Guru, Guru99")
    label.move(100,130)
    label.show()

    btn = QPushButton(w)
    btn.setText('Beheld')
    btn.move(110,150)
    btn.show()
    btn.clicked.connect(dialog)

    
    w.show()
    sys.exit(app.exec_())

Сохраните файл как appone.py или как угодно и нажмите F5, чтобы запустить программу. Если вы не допустили ошибок, то... IDLE Откроется новое окно с текстом и кнопкой, как показано ниже.

За пределами пустого Windows

  1. После того, как вы нажмете кнопку в первом окне, откроется новое окно сообщения с написанным вами текстом.
  2. Теперь вы можете нажать кнопку «Скрыть детали/Показать детали», чтобы переключить видимость дополнительного текста.

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

Теперь, когда всё работает, давайте посмотрим на дополнительный код, который вы добавили к предыдущему примеру PyQt5.

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox

Это импортирует еще несколько виджетов, которые вы использовали в примерах PyQt5, а именно QLabel, QPushButton и QMessage.Box.

def dialog():
    mbox = QMessageBox()

    mbox.setText("Your allegiance has been noted")
    mbox.setDetailedText("You are now a disciple and subject of the all-knowing Guru")
    mbox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
            
    mbox.exec_()

Здесь вы определили метод с именем dialog, который создает виджет окна сообщения и задает текст для кнопок и других полей.

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

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(300,300)
    w.setWindowTitle("Guru99")

Это основная часть приложения, и, как и в предыдущем примере, вы начинаете с создания экземпляра QApplication, а затем простого виджета, то есть экземпляра QWidget.

label = QLabel(w)
    btn = QPushButton(w)

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

Здесь важно отметить, что при создании объектов label и btn вы передаете объект окна (w) конструкторам QLabel и QPushButton. Вот как работает вложение в PyQt5. Чтобы создать виджет внутри другого виджета, вы передаете ссылку родительского виджета конструктору дочернего виджета.

label.move(100,130)
btn.move(110,150)

move() используется для установки положения виджета относительно его родительского виджета. В первом случае метка будет перемещена на 100 пикселей слева и на 130 пикселей сверху окна.

Аналогично, кнопка будет размещена на расстоянии 110 пикселей слева и 150 пикселей сверху окна. Этот пример представляет собой грубый способ создания макетов и обычно не используется в производстве; оно включено сюда только в учебных целях. Qt поддерживает различные макеты, которые вы подробно увидите в следующих разделах этого руководства по PyQt.

btn.clicked.connect(dialog)

Наконец, это пример использования сигналов и слотов в Qt. В приложениях с графическим интерфейсом пользователя функции выполняются в зависимости от действий пользователя, таких как наведение курсора на элемент или нажатие кнопки. Эти действия называются События. Напомним, что метод app.exec_() передает управление Qt. мероприятие петля. Именно для этого существует цикл событий: для прослушивания событий и выполнения ответных действий.

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

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

 widget.signal.connect(slot)

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

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

Компоненты и виджеты

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

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

Структура каталогов PyQt5

Структура каталогов PyQt5

Это основные модули, используемые PythonПривязка Qt, в частности PyQt5.

  • QtОн объединяет все упомянутые ниже классы/модули в один модуль. Это значительно увеличивает объем памяти, используемой приложением. Однако управлять фреймворком проще, импортируя только один модуль.
  • QtCore: Содержит основные неграфические классы, используемые другими модулями. Здесь реализован цикл событий Qt, сигналы, связь со слотами и т. д.
  • QtВиджетыСодержит большинство виджетов, доступных в PyQt5.
  • QtGui: Содержит компоненты графического интерфейса и расширяет модуль QtCore.
  • QtNetwork: Содержит классы, используемые для реализации сетевого программирования посредством Qt. Он поддерживает TCP-серверы, TCP-сокеты, UDP-сокеты, обработку SSL, сетевые сеансы и поиск DNS.
  • QtМультимедиа: обеспечивает низкоуровневую мультимедийную функциональность.
  • QtSql: реализует интеграцию баз данных для баз данных SQL. Поддерживает ODBC, MySQL, Oracle, SQLite и PostgreSQL.

Виджеты PyQt5

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

  • QLineПравить: это поле ввода, которое позволяет пользователю ввести одну строку текста.
line = QLineEdit()
  • QRadioButtonЭто поле ввода с выбираемой кнопкой, аналогичной переключателям в HTML.
rad = QRadioButton("button title")
rad.setChecked(True)  #to select the button by default.
  • QComboBox: используется для отображения раскрывающегося меню со списком доступных для выбора элементов.
drop = QComboBox(w)
drop.addItems(["item one", "item two", "item three"])
  • QCheckBox: Отображает выбираемое квадратное поле перед меткой, которое отмечается при выборе, аналогично переключателям.
check = QCheckBox("button title")
  • QMenuBar: Он отображает горизонтальную панель меню в верхней части окна. На эту панель можно добавлять только объекты класса QMenu. Эти объекты QMenu могут дополнительно содержать строки, объекты QAction или другие объекты QMenu.
  • QToolBar: это горизонтальная полоса или панель, которую можно перемещать внутри окна. Он может содержать кнопки и другие виджеты.
  • QTabОн используется для разбивки содержимого окна на несколько страниц, доступ к которым осуществляется через различные вкладки в верхней части виджета. Он состоит из двух разделов: панели вкладок и страницы вкладок.
  • QScrollBarОн используется для создания полос прокрутки, позволяющих пользователю прокручивать окно вверх и вниз. Он состоит из подвижного ползунка и ползунка. track, а также две кнопки для прокрутки ползунка вверх или вниз.
scroll = QScrollBar()
  • QSplitter: Разделители используются для разделения содержимого окна, чтобы виджеты были правильно сгруппированы и не выглядели загроможденными. QSplitter — это один из основных обработчиков макета, доступных в PyQt5, который используется для разделения содержимого как по горизонтали, так и по вертикали.
  • QDockВиджет-докачка — это дочернее окно с двумя свойствами: его можно перемещать внутри основного окна и закреплять за пределами родительского окна в другом месте на экране.

Макеты и темы

В предыдущих примерах PyQt5 вы использовали только методы move() и resize() для установки положения виджетов в вашем графическом интерфейсе.

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

  1. QBoxПланировка
  2. QGridLayout

QBoxПланировка

QBoxМакет используется для выравнивания дочерних виджетов макета в горизонтальный или вертикальный ряд. Два класса интересов, которые наследуются от QBoxПланировка:

  • QHBoxМакет: используется для горизонтального расположения дочерних виджетов.
  • QVBoxМакет: используется для вертикального расположения дочерних виджетов.

Например, вот так три кнопки совмещены с QH.BoxМакет будет выглядеть.

QBoxПланировка

import sys
from PyQt5.QtWidgets import *

if __name__ == "__main__":

    app = QApplication([])
    w = QWidget()
    w.setWindowTitle("Musketeers")

    btn1 = QPushButton("Athos")
    btn2 = QPushButton("Porthos")
    btn3 = QPushButton("Aramis")

    hbox = QHBoxLayout(w)

    hbox.addWidget(btn1)
    hbox.addWidget(btn2)
    hbox.addWidget(btn3)

    w.show()

    sys.exit(app.exec_())

А вот так они будут выглядеть в QVBoxМакет.

QBoxПланировка

import sys
from PyQt5.QtWidgets import *

if __name__ == "__main__":

    app = QApplication([])
    w = QWidget()
    w.setWindowTitle("Musketeers")

    btn1 = QPushButton("Athos")
    btn2 = QPushButton("Porthos")
    btn3 = QPushButton("Aramis")

    vb = QVBoxLayout(w)

    vb.addWidget(btn1)
    vb.addWidget(btn2)
    vb.addWidget(btn3)

    w.show()

    sys.exit(app.exec_())

Единственная функция, которая на данном этапе нуждается в пояснении, — это метод addWidget(). Он используется для вставки виджетов в HBox или VBox макет. Он также используется в других макетах, где принимает другое количество параметров, как вы увидите в следующем разделе. Виджеты появятся внутри макета в том порядке, в котором вы их вставите.

QGridLayout

QGridLayout используется для создания интерфейсов, в которых виджеты располагаются в виде сетки (например, матрицы или 2D-массива). Чтобы вставить элементы в макет сетки, вы можете использовать матричное представление, чтобы определить количество строк и столбцов в сетке, а также положение этих элементов.

Например, чтобы создать сетку 3*3 (т. е. сетку с тремя строками и тремя столбцами), вы напишете следующий код:

Import sys
from PyQt5.QtWidgets import *

if __name__ == "__main__":
    app = QApplication([])

    w = QWidget()

    grid = QGridLayout(w)

    for i in range(3):
        for j in range(3):
            grid.addWidget(QPushButton("Button"),i,j)


    w.show()
    sys.exit(app.exec_())

Это будет вывод:

QGridLayout

Метод addWidget() в компоненте GridLayout принимает следующие аргументы:

  • Объект виджета, который вы хотите добавить в сетку.
  • Координата X объекта
  • Координата Y объекта
  • Параметр row-span (по умолчанию = 0)
  • Параметр col-span (по умолчанию = 0)

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

import sys
from PyQt5.QtWidgets import *

if __name__ == "__main__":
    app = QApplication([])

    w = QWidget()

    grid = QGridLayout(w)
    grid.addWidget(QPushButton("Button one"),0,0)
    grid.addWidget(QPushButton("Button two"),0,1)
    grid.addWidget(QPushButton("Button three"),1,0)
    grid.addWidget(QPushButton("Button four"),1,1)


    w.show()
    sys.exit(app.exec_())

Вот как будет выглядеть сетка:

QGridLayout

Вы также можете передать параметры rowspan и colspan в addWidget(), чтобы охватить более одной строки или столбца.

Например,

grid.addWidget(QPushButton("Button five"),2,0,1,0)

Это создаст кнопку, которая растянется на оба столбца.

QGridLayout

Темы

PyQt5 поставляется с некоторыми встроенными темами, которые вы можете использовать в своих приложениях. setStyle () Метод, вызываемый в экземпляре QApplication, используется для установки определенной темы для вашего приложения.

Например, добавление следующей строки кода изменит тему вашего приложения со стандартной на тему Fusion.

app.setStyle("Fusion")

Вот как будет выглядеть предыдущий пример в теме Fusion.

Темы

Ещё одна полезная функция для оформления ваших приложений — метод setPalette(). Вот код для изменения цвета различных виджетов с помощью setPalette().

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QPalette

if __name__ == "__main__":
    app = QApplication([])
    app.setStyle("Fusion")
    
    qp = QPalette()
    qp.setColor(QPalette.ButtonText, Qt.black)
    qp.setColor(QPalette.Window, Qt.black)
    qp.setColor(QPalette.Button, Qt.gray)
    app.setPalette(qp)

    w = QWidget()

    grid = QGridLayout(w)
    grid.addWidget(QPushButton("Button one"),0,0)
    grid.addWidget(QPushButton("Button two"),0,1)
    grid.addWidget(QPushButton("Button three"),1,0)
    grid.addWidget(QPushButton("Button four"),1,1)


    w.show()
    sys.exit(app.exec_())

Вот результат.

Темы

Чтобы использовать метод setPalette(), сначала необходимо определить палитру. Это делается путем создания объекта класса QPalette.

 qp = QPalette()

Обратите внимание, что класс QPalette принадлежит модулю QtGui, и для корректной работы вам потребуется его импортировать. После создания объекта QPalette используйте метод setColor(), передав имя виджета, цвет которого вы хотите изменить, и желаемый цвет.

 qp.setColor(QPalette.Window, Qt.black)

Это изменит цвет окна на черный. После того, как вы определили цветовую схему, используйте функцию setPalette(), чтобы применить палитру к вашему приложению.

app.setPalette(qp)

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

Часто задаваемые вопросы (FAQ)

Tkinter поставляется с Python и подходит для небольших, простых инструментов. PyQt предлагает гораздо больше виджетов, визуальный конструктор и нативный внешний вид, что делает его лучше для больших профессиональных настольных приложений — ценой более крутой кривой обучения и лицензирования по GPL.

Оба приложения используют одни и те же библиотеки Qt и имеют практически идентичные API. Ключевое различие заключается в лицензировании: PyQt использует GPL или платную коммерческую лицензию, в то время как PySide (Qt для Python) использует лицензию LGPL, позволяющую бесплатно распространять закрытый исходный код.

Qt Designer — это инструмент с функцией перетаскивания, который сохраняет ваш макет в виде XML-файла .ui. Преобразуйте его в Python с помощью утилиты pyuic5 или загрузить ее во время выполнения, используя uic.loadUi().

PyQt6 использует более новую платформу Qt 6 и требует наличия перечислений с полной областью видимости, таких как Qt.AlignmentFlag.AlignLeft. PyQt5 ориентирован на Qt 5 и остается наиболее широко используемой версией. PyQt6 также исключает некоторые устаревшие модули и добавляет улучшенную поддержку высокого разрешения (DPI).

Используйте PyInstaller: запустите pyinstaller –onefile –windowed app.py, чтобы объединить ваш скрипт, PyQt5 и библиотеки Qt в один исполняемый файл. Флаг –windowed скрывает консоль. Популярными альтернативами являются fbs и cx_Freeze.

PyQt5 удобен для начинающих, если вы знаете основы. PythonПонимание классов, объектов и шаблона «сигналы и слоты» очень помогает. Qt Designer позволяет визуально создавать макеты, так что вы можете создавать работающие окна, прежде чем осваивать каждый виджет вручную.

PyQt создает настольные интерфейсы для моделей машинного обучения — панели мониторинга, которые загружают данные, запускают обучение или вывод результатов и отображают прогнозы, диаграммы или изображения. Он хорошо сочетается с NumPy, pandas и Matplotlib, wrap.ping Обученная модель в удобном графическом интерфейсе пользователя.

Да. GitHub Copilot автоматически дополняет распространенные шаблоны PyQt5, такие как настройка QApplication, создание виджета и соединения сигнал-слот, из комментария или имени функции. Всегда запускайте сгенерированное окно, чтобы убедиться, что макеты и обработчики событий работают должным образом.

Подведем итог этой публикации следующим образом: