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

⚡ Умно обобщение

PyQt е Python обвързване за междуплатформения инструментариум за Qt widget, позволяващо на разработчиците да създават оригинални графични потребителски интерфейси за настолни компютри. То обгръща повече от шестстотин C++ класове, обхващащи прозорци, бутони, оформления, сигнали, слотове и теми за Windows, macOSи Linux.

  • 🔘 Какво е PyQt: A Python обвързване за Qt C++ рамка, поддържана от Riverbank Computing.
  • ☑️ версии: PyQt4 binds Qt 4.x and 5.x; PyQt5 targets only the Qt 5.x series.
  • Монтаж: Мениджърът на пакети pip инсталира PyQt5 от колело с една команда.
  • 🧪 Първо приложение: QApplication и QWidget създават и показват основен прозорец на екрана.
  • 🛠️ Signalи слотове: Събитията от уиджети генерират сигнали, които се свързват с Python функции на слотовете.
  • 🤖 Готов за изкуствен интелект: PyQt изгражда десктоп интерфейси, които изпълняват и визуализират модели за машинно обучение.

Урок за PyQt5

Разделите по-долу ви превеждат от основите на PyQt през инсталацията, основните джаджи, оформленията и темите с примери за изпълнение.

Какво е PyQt?

PyQt е Python binding of the open-source widget-toolkit Qt, which also functions as a cross-platform application development framework. Qt is a popular C++ framework for writing GUI applications for all major desktop, mobile, and embedded platforms (it supports 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 предоставя свързващ код за свързване на версии 4.x и 5.x на Qt framework-а, докато PyQt5 предоставя свързване само за версии 5.x. В резултат на това PyQt5 не е обратно съвместим с остарелите модули на по-старата версия. В този урок за PyQt GUI, PyQt5 ще бъде използван за демонстрация на примери. Освен тези две версии, Riverbank Computing предоставя и PyQt3D - Python връзки за рамката Qt3D. Qt3D е рамка за приложения, използвана за създаване на симулационни системи в реално време с 2D/3D рендиране.

Как да инсталирате PyQt5

В този урок за PyQt5 ще видим двата начина за инсталиране на PyQt:

  • Използване на Wheel файлове
  • Изграждане и инсталиране от изходния код

Qt (произнася се сладък) е сложна система и кодовата база на PyQt съдържа компилиран C++ намлява Python code under the hood. As a result, it is a complicated process to build and install it from the source compared to other Python библиотеки. Можете лесно да инсталирате PyQt5, използвайки колела.

Монтаж с колела

Колелата са новият стандарт Python формат на опаковка и разпространение. Най-просто казано, колелото е ZIP архив със специално име и .whl файлово разширение. Колелата могат да се монтират с помощта на 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 MB) и ще го инсталира на вашата система.

инсталирайте PyQt5

Като алтернатива можете също да изтеглите a Windows двоичен файл за версията на Python инсталиран на вашия компютър.

След като приключи, преминете към следващия раздел в този урок за PyQt5, за да напишете първото си GUI приложение.

Основен PyQt Concepts и програми

След като успешно инсталирахте PyQt5 на вашия компютър, сте готови да пишете Python Приложения с графичен потребителски интерфейс.

Нека започнем с едно просто приложение в този урок за PyQt5, което ще покаже празен прозорец на екрана ви.

Fire up your 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; всяко UI приложение трябва да създаде екземпляр на QApplication, като вид входна точка в приложението. Ако не го създадете, ще се показват грешки.

sys.argv е списъкът с параметри на командния ред, които можете да предадете на приложението, когато го стартирате през обвивката или докато автоматизирате интерфейса.

В този пример с PyQt5 не сте предали никакви аргументи на QApplication. Следователно, можете да го замените с кода по-долу и дори да не се налага да импортирате модула sys.

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

След това създаваме обект от класа QWidget. QWidget е основният клас на всички UI обекти в Qt и почти всичко, което виждате в едно приложение, е widget. Това включва диалогови прозорци, текстове, бутони, ленти и т.н. Характеристиката, която ви позволява да проектирате сложни потребителски интерфейси, е, че джаджите могат да бъдат вложени, т.е. можете да имате джаджа вътре в джаджа, която е вътре в друга джаджа. Ще видите това в действие в следващия раздел.

w.resize(300,300)

Методът за преоразмеряване на класа QWidget ви позволява да зададете размерите на всяка джаджа. В този случай вие сте преоразмерили прозореца до 300px на 300px.

Тук трябва да запомните, че уиджетите могат да бъдат вложени заедно; най-външният уиджет (т.е. уиджетът без родител) се нарича прозорец (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 се използва за създаване на бутон с възможност за кликване.

Критичното нещо, което трябва да забележите тук, е, че когато създавате обекти етикет и btn, вие предавате обекта прозорец (w) на конструкторите на QLabel и QPushButton. Ето как работи влагането в PyQt5. За да създадете уиджет в друг уиджет, предавате препратката на родителския уиджет към конструктора на детето.

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

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

По същия начин бутонът ще бъде поставен на 110px отляво и 150px от горната част на прозореца. Този пример е груб начин за постигане на оформления и обикновено не се използва в производството; той е включен тук само за учебни цели. Qt поддържа различни оформления, които ще видите подробно в предстоящите раздели на този урок за PyQt.

btn.clicked.connect(dialog)

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

Всеки път, когато възникне събитие, като потребител, който щракне върху бутон, съответният Qt модул повдига a сигнализира. Тези сигнали могат да бъдат свързани към Python функции (като диалоговата функция в този пример), така че функцията да се изпълнява, когато се задейства сигнал. Тези функции се наричат слотове на езика на Qt.

Впоследствие, основният синтаксис за задействане на слот функция в отговор на сигнал от събитие е следният:

 widget.signal.connect(slot)

Това означава, че винаги, когато сигнализира се задейства от a джаджа, свързаният слот функцията ще бъде изпълнена. В обобщение, сигналите и слотовете се използват от Qt за комуникация между обекти и улесняване на повторната употреба и интерактивност на компонентите.

След като вече знаете как да влагате уиджети и да реализирате взаимодействия с помощта на сигнали и слотове, ето списък с полезни уиджети и други класове, които можете да използвате във вашите приложения на PyQt.

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

В PyQt има голям брой уиджети за създаване на GUI приложения. Въпреки това, с PyQt5, имаше пренареждане на класове в различни модули и ревизии в лицензите.

Следователно е изключително важно да имате общ поглед върху структурата на PyQt5. В този раздел ще видите как PyQt5 е организиран вътрешно и ще научите за различните модули, библиотеки и API класове, предоставяни от PyQt5.

PyQt5 структура на директорията

PyQt5 структура на директорията

Това са основните модули, използвани от PythonQt свързване, по-специално PyQt5.

  • QtКомбинира всички класове/модули, споменати по-долу, в един модул. Това значително увеличава паметта, използвана от приложението. Управлението на рамката обаче е по-лесно, като се импортира само един модул.
  • QtCore: Съдържа основните неграфични класове, използвани от други модули. Това е мястото, където Qt цикълът на събитията, сигналите и слот-свързването и т.н.
  • QtWidgetsСъдържа повечето от наличните в PyQt5 джаджи.
  • QtGui: Съдържа GUI компоненти и разширява QtCore модула.
  • QtNetwork: Съдържа класове, използвани за внедряване на мрежово програмиране чрез Qt. Той поддържа TCP сървъри, TCP сокети, UDP сокети, SSL обработка, мрежови сесии и DNS търсения.
  • QtМултимедия: осигурява мултимедийна функционалност на ниско ниво.
  • QtSql: реализира интеграция на база данни за SQL бази данни. Поддържа ODBC, MySQL, Oracle, SQLite, и PostgreSQL.

PyQt5 Widgets

Ето списък на най-често използваните джаджи в 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: A dock widget is a sub-window with two properties: it can be moved within the main window, and it can be docked outside the parent window to another location on the screen.

Оформления и теми

В предишните примери на 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_())

И така ще изглеждат в QVBoxLayout.

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

The addWidget() method in the grid layout takes these arguments:

  • Обектът на притурката, който искате да добавите към мрежата
  • X-координатата на обекта
  • Y-координатата на обекта
  • Разстоянието между редовете (по подразбиране = 0)
  • The col-span (default = 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 Style Sheets.

Въпроси и Отговори

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Разбирането на класовете, обектите и шаблона signals-and-slots помага най-много. Qt Designer ви позволява да изграждате оформления визуално, така че да можете да създавате работещи прозорци, преди да овладеете всеки уиджет на ръка.

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

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

Обобщете тази публикация с: