Підручник з 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 з колеса за допомогою однієї команди.
  • 🧪 Перший додаток: 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
  • мереж

Ці функції можна поєднувати для створення розширених інтерфейсів користувача, а також окремих програм. Багато великих компаній у всіх галузях використовують 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-архів зі спеціальною назвою та .кружляти розширення файлу. Колеса можна встановити за допомогою pip (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

Крім того, ви також можете завантажити a 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

Цей оператор імпортує всі модулі, необхідні для створення GUI, у поточний простір імен. Модуль 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)

Метод зміни розміру класу QWidget дозволяє встановити розміри будь-якого віджета. У цьому випадку ви змінили розмір вікна до 300 на 300 пікселів.

Тут слід пам'ятати, що віджети можуть бути вкладені один в одного; найзовніший віджет (тобто віджет без батьківського елемента) називається вікном (Window).

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 і 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_()

Тут ви визначили метод під назвою dialog, який створює віджет вікна повідомлень і встановлює деякий текст для кнопок та інших полів.

Метод діалогу викликається з головного блоку програми, коли натиснуто кнопку в певному віджеті (у цьому випадку btn 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, ви передаєте об’єкт window (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 викликає a сигналізувати. Ці сигнали можна підключати до Python Функції (як у діалоговій функції в цьому прикладі), щоб функція виконувалася, коли спрацьовує сигнал. Ці функції називаються ігрові автомати мовою Qt.

Згодом, основний синтаксис для запуску функції слота у відповідь на сигнал від події виглядає наступним чином:

 widget.signal.connect(slot)

Це означає, що щоразу, коли сигналізувати викликається a віджет, підключений слот функція буде виконана. Підсумовуючи, сигнали та слоти використовуються Qt для зв’язку між об’єктами та полегшення повторного використання компонентів та інтерактивності.

Тепер, коли ви знаєте, як вкладати віджети та реалізовувати взаємодії за допомогою сигналів і слотів, ось список корисних віджетів та інших класів, які ви можете використовувати у своїх програмах PyQt.

Компоненти та віджети

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

Тому вкрай важливо мати загальне уявлення про структуру PyQt5. У цьому розділі ви побачите, як PyQt5 організований внутрішньо, та дізнаєтеся про різні модулі, бібліотеки та класи API, що надаються PyQt5.

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

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

Це основні модулі, які використовує Pythonзв'язування Qt, зокрема PyQt5.

  • QtВін об'єднує всі класи/модулі, згадані нижче, в один модуль. Це значно збільшує обсяг пам'яті, що використовується застосунком. Однак, керувати фреймворком легше, імпортуючи лише один модуль.
  • QtCore: Містить основні неграфічні класи, які використовуються іншими модулями. Тут реалізовано цикл подій Qt, сигнали, з’єднання слотів тощо.
  • QtWidgetsМістить більшість віджетів, доступних у PyQt5.
  • QtGui: Містить компоненти GUI та розширює модуль QtCore.
  • QtNetwork: Містить класи, які використовуються для реалізації мережевого програмування через Qt. Він підтримує сервери TCP, сокети TCP, сокети UDP, обробку SSL, мережеві сеанси та пошук DNS.
  • QtMultimedia: забезпечує низькорівневу мультимедійну функціональність.
  • QtSql: реалізує інтеграцію бази даних для баз даних SQL. Підтримує ODBC, MySQL, Oracle, SQLite та PostgreSQL.

Віджети PyQt5

Ось список найчастіше використовуваних віджетів у PyQt5:

  • QLineEdit: Це поле введення, яке дозволяє користувачеві ввести один рядок тексту.
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() для встановлення позицій віджетів у вашому GUI.

Однак PyQt має надійний механізм керування макетом, який можна використовувати для створення розширених інтерфейсів користувача для програм. У цьому розділі ви дізнаєтесь про два важливі класи, які використовуються в Qt для створення та керування макетами.

  1. QBoxмакет
  2. QGridLayout

QBoxмакет

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

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

Наприклад, ось як три кнопки вирівняні з QHBoxМакет буде виглядати.

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_())

А так вони виглядатимуть у КВBoxLayout.

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 або ВBox макет. Він також використовується в інших макетах, де він приймає іншу кількість параметрів, як ви побачите в наступному розділі. Віджети відображатимуться всередині макета в тому порядку, у якому ви їх вставите.

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() у сітковому макеті приймає такі аргументи:

  • Об’єкт віджета, який потрібно додати до сітки
  • Координата х об'єкта
  • Y-координата об'єкта
  • Розмір рядка (за замовчуванням = 0)
  • Діапазон стовпців (за замовчуванням = 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 постачається з деякими вбудованими темами, які можна використовувати у своїх програмах. The 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.

Поширені запитання

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 також видаляє деякі застарілі модулі та додає кращу підтримку високої роздільної здатності.

Використовуйте PyInstaller: запустіть pyinstaller –onefile –windowed app.py, щоб об'єднати ваш скрипт, PyQt5 та бібліотеки Qt в один виконуваний файл. Прапорець –windowed приховує консоль. fbs та cx_Freeze – популярні альтернативи.

PyQt5 зручний для початківців, якщо ви знаєте основи PythonРозуміння класів, об'єктів та шаблону signals-and-slots допомагає найбільше. Qt Designer дозволяє візуально створювати макети, тож ви можете створювати робочі вікна, перш ніж освоювати кожен віджет вручну.

PyQt створює фронтенди для моделей машинного навчання на робочому столі — панелі інструментів, які завантажують дані, запускають навчання або логічні висновки, а також відображають прогнози, діаграми або зображення. Він добре поєднується з NumPy, pandas та Matplotlib, wrapping навчена модель у зручному графічному інтерфейсі.

Так. GitHub Copilot автоматично завершує поширені шаблони PyQt5, такі як налаштування QApplication, створення віджетів та з'єднання слотів сигналів з коментаря або назви функції. Завжди запускайте згенероване вікно, щоб переконатися, що макети та обробники подій працюють належним чином.

Підсумуйте цей пост за допомогою: