Руководство по PyQt5 для начинающих

Руководство по PyQt5 для начинающих Программирование и разработка

PyQt5 — это модуль Python для разработки настольных приложений с графическим интерфейсом пользователя. Он доступен для нескольких платформ, таких как Windows, Mac, Linux, iOS и Android. Python предлагает несколько модулей, которые фактически поддерживают разработку графического интерфейса, например Tkinter, wxPython, PySide2 и другие. Однако PyQt5 использует более 1000 классов; на самом деле PyQt5 — это огромный модуль! Кроме того, PyQt5 включает Qt Designer, конструктор графического пользовательского интерфейса, который еще больше упрощает создание графического интерфейса. Его можно использовать для создания чего угодно, от медиаплееров до веб-браузеров. В этом руководстве мы изучим основы модуля PyQt5.

Сначала установим PyQt5

pip install pyqt5

pip install pyqt5-tools

ШАГ 1: СОЗДАНИЕ ПУСТОГО ОКНА

Первый шаг в создании чего-либо — установка пустого окна. Само пустое окно требует нескольких строк кода, так что давайте посмотрим на это.

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow

import sys

from PyQt5 import QtGui

class window(QtWidgets.QWidget):

def __init__(self):

super().__init__()

Задайте геометрию окна с помощью метода setGeometry (), который принимает четыре аргумента — начальную позицию по оси x, начальную позицию по оси y (другими словами, где на экране появляется верхний левый угол), ширину и высоту окна. окно.

        self.setGeometry(350, 100, 800, 600)

Задайте заголовок окна с помощью метода setWindowTitle ().

        self.setWindowTitle(«PyQt5»)

Вы можете установить значок с помощью setWindowIcon (). Обратите внимание, что размер значка должен составлять 64 на 64 пикселя.

        self.setWindowIcon(QtGui.QIcon(«rattle.png»))

Каждому файлу PyQt5 требуется следующая строка, которая принимает в качестве аргумента sys.argv.

application = QApplication(sys.argv)

Затем создайте экземпляр класса, который мы создали выше.

win = window()

win.show()

Для выхода из окна по нажатию кнопки X нам понадобится sys.exit (application.exec ()).

sys.exit(application.exec())

Этот код создаст пустое окно. Код в целом будет выглядеть так:

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow

import sys

from PyQt5 import QtGui

class window(QtWidgets.QWidget):

def __init__(self):

super().__init__()

self.setGeometry(350, 100, 800, 600)

self.setWindowTitle(«PyQt5»)

self.setWindowIcon(QtGui.QIcon(«rattle.png»))

application = QApplication(sys.argv)

win = window()

win.show()

sys.exit(application.exec())

ШАГ 2: ВВОДНАЯ ПАНЕЛЬ

Далее давайте создадим панель ввода. Панель ввода — это место, где пользователи могут добавлять текст, который мы можем извлечь. Полосы ввода создаются с помощью QWidgets.QLineEdit (). Очевидно, мы задаем его геометрию с помощью метода setGeometry ().

    def initUI(self):

self.input_bar = QtWidgets.QLineEdit(self)

self.input_bar.setGeometry(150, 250, 500, 40)

Имейте в виду; вам все равно нужно активировать функцию в методе __init__ следующим образом:

        self.initUI()

Полный код на этом этапе будет выглядеть так:

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow

import sys

from PyQt5 import QtGui

class window(QtWidgets.QWidget):

def __init__(self):

super().__init__()

self.setGeometry(350, 100, 800, 600)

self.setWindowTitle(«PyQt5»)

self.setWindowIcon(QtGui.QIcon(«rattle.png»))

self.initUI()

def initUI(self):

self.input_bar = QtWidgets.QLineEdit(self)

self.input_bar.setGeometry(150, 250, 500, 40)

application = QApplication(sys.argv)

win = window()

win.show()

sys.exit(application.exec())

ШАГ 3: СОЗДАНИЕ КНОПОК

Теперь давайте добавим несколько кнопок на пустой холст. Итак, напишем код для кнопки. Для кнопки мы используем QtWidgets.QPushButton (). Как обычно, мы можем задать его геометрию с помощью метода setGeometry ().

        self.button1 = QtWidgets.QPushButton(«Show», self)

self.button1.setGeometry(275, 350, 200, 50)

Установите значок с помощью метода setIcon ().

        self.button1.setIcon(QtGui.QIcon(«rattle.png»))

Установите стиль текста с помощью метода setStyleSheet (). Вы можете, среди прочего, изменить цвет, толщину и размер шрифта.

        self.button1.setStyleSheet(«color:black»)

self.button1.setStyleSheet(«font-weight: bold»)

self.button1.setStyleSheet(«font-size: 18pt»)

Чтобы кнопка выполняла какие-либо действия при нажатии, вам необходимо сообщить кнопке, что при нажатии на нее необходимо активировать функцию. Это делается с помощью clicked.connect (), где активируемая функция передается в качестве аргумента. В моем случае это:

        self.button1.clicked.connect(self.button_clicked)

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

    def button_clicked(self):
url_value = self.input_bar.text()

print(url_value)

Теперь код в целом будет выглядеть так:

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow

import sys

from PyQt5 import QtGui

class window(QtWidgets.QWidget):

def __init__(self):

super().__init__()

self.setGeometry(350, 100, 800, 600)

self.setWindowTitle(«PyQt5»)

self.setWindowIcon(QtGui.QIcon(«rattle.png»))

self.initUI()

def initUI(self):

self.input_bar = QtWidgets.QLineEdit(self)

self.input_bar.setGeometry(150, 250, 500, 40)

self.button1 = QtWidgets.QPushButton(«Show», self)

self.button1.setGeometry(275, 350, 200, 50)

self.button1.setIcon(QtGui.QIcon(«rattle.png»))

self.button1.setStyleSheet(«color:black»)

self.button1.setStyleSheet(«font-weight: bold»)

self.button1.setStyleSheet(«font-size: 18pt»)

self.button1.clicked.connect(self.button_clicked)

def button_clicked(self):

url_value = self.input_bar.text()

print(url_value)

application = QApplication(sys.argv)

win = window()

win.show()

sys.exit(application.exec())

ШАГ 4: СОЗДАНИЕ ЯРЛЫКОВ

Теперь давайте изменим команду нажатия кнопки с помощью QLabels. QLabels используются для добавления текста. Мы добавляем это в def initUI (self).

        self.label = QtWidgets.QLabel(self)

Устанавливаем текст на этикетке с помощью метода setText ().

        self.label.setText(«Change This Title by Clicking the Button»)

self.label.setGeometry(QtCore.QRect(200, 80, 500, 100))

Мы устанавливаем шрифт, размер и вес с помощью setStyleSheet (). Мы устанавливаем шрифт, размер и вес с помощью setStyleSheet ().

        self.label.setStyleSheet(«font-weight:bold»)

self.label.setStyleSheet(«font-size: 18pt»)

И, наконец, обновляем все с помощью метода update ().

        self.label.update()

Это создает следующее:

Теперь мы можем изменить содержимое в функции button_clicked

Теперь мы можем изменить содержимое в функции button_clicked ().

def button_clicked(self):

Мы можем получить то, что пользователь пишет в текстовой строке, используя метод text ().

        url_value = self.input_bar.text()

Затем мы можем изменить метку при нажатии кнопки с помощью метода setText () и разместить их в нужном месте с помощью метода setGeometry ().

        self.label.setText(url_value)

self.label.setGeometry(QtCore.QRect(200, 80, 500, 100))

Теперь код в целом будет выглядеть так:

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow

import sys

from PyQt5 import QtGui, QtCore

class window(QtWidgets.QWidget):

def __init__(self):

super().__init__()

self.setGeometry(350, 100, 800, 600)

self.setWindowTitle(«PyQt5»)

self.setWindowIcon(QtGui.QIcon(«rattle.png»))

self.initUI()

def initUI(self):

self.input_bar = QtWidgets.QLineEdit(self)

self.input_bar.setGeometry(150, 250, 500, 40)

self.button1 = QtWidgets.QPushButton(«Show», self)

self.button1.setGeometry(275, 350, 200, 50)

self.button1.setIcon(QtGui.QIcon(«rattle.png»))

self.button1.setStyleSheet(«color:black»)

self.button1.setStyleSheet(«font-weight: bold»)

self.button1.setStyleSheet(«font-size: 18pt»)

self.button1.clicked.connect(self.button_clicked)

self.label = QtWidgets.QLabel(self)

self.label.setText(«Change This Title by Clicking the Button»)

self.label.setGeometry(QtCore.QRect(200, 80, 500, 100))

self.label.setStyleSheet(«font-weight:bold»)

self.label.setStyleSheet(«font-size: 18pt»)

self.label.update()

def button_clicked(self):

url_value = self.input_bar.text()

self.label.setText(url_value)

self.label.setGeometry(QtCore.QRect(200, 80, 500, 100))

application = QApplication(sys.argv)

win = window()

win.show()

sys.exit(application.exec())

ШАГ 5: QVBOXLAYOUT И QHBOXLAYOUT

Я не не т добавлять к QVBoxLayout или QHBoxLayout здесь, но вы можете, если вы хотите. QHBoxLayout расположит все по горизонтали, а QVBoxLayout расположит по вертикали. Если вы используете QHBoxLayout или QVBoxLayout, вы должны опустить метод setGeometry ().

Если бы вы хотели добавить его, вы бы написали следующее в def initUI (self). Сначала вы инициализируете макет с помощью QVBoxLayout ():

        self.design = QVBoxLayout()

Затем вы добавляете в него нужные виджеты с помощью метода addWidget ().

        self.design.addWidget(self.label)

self.design.addWidget(self.input_bar)

self.design.addWidget(self.button1)

Вы устанавливаете макет с помощью setLayout (), который принимает инициализированную переменную в качестве аргумента.

        self.setLayout(self.design)

Мне это здесь не нужно, потому что я все настраиваю с помощью setGeometry (), поэтому я опущу это в своем коде. Однако, если вы хотите, чтобы это было в вашем коде, весь код будет выглядеть так:

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayout, QVBoxLayout

import sys

from PyQt5 import QtGui, QtCore

class window(QtWidgets.QWidget):

def __init__(self):

super().__init__()

#self.setGeometry(350, 100, 800, 600)

self.setWindowTitle(«PyQt5»)

self.setWindowIcon(QtGui.QIcon(«rattle.png»))

self.initUI()

def initUI(self):

self.input_bar = QtWidgets.QLineEdit(self)

#self.input_bar.setGeometry(150, 250, 500, 40)

self.button1 = QtWidgets.QPushButton(«Show», self)

#self.button1.setGeometry(275, 350, 200, 50)

self.button1.setIcon(QtGui.QIcon(«rattle.png»))

self.button1.setStyleSheet(«color:black»)

self.button1.setStyleSheet(«font-weight: bold»)

self.button1.setStyleSheet(«font-size: 18pt»)

self.button1.clicked.connect(self.button_clicked)

self.label = QtWidgets.QLabel(self)

self.label.setText(«Change This Title by Clicking the Button»)

#self.label.setGeometry(QtCore.QRect(200, 80, 500, 100))

self.label.setStyleSheet(«font-weight:bold»)

self.label.setStyleSheet(«font-size: 18pt»)

self.label.update()

self.design = QVBoxLayout()

self.design.addWidget(self.label)

self.design.addWidget(self.input_bar)

self.design.addWidget(self.button1)

self.setLayout(self.design)

def button_clicked(self):

url_value = self.input_bar.text()

self.label.setText(url_value)

self.label.setGeometry(QtCore.QRect(200, 80, 500, 100))

application = QApplication(sys.argv)

win = window()

win.show()

sys.exit(application.exec())

application = QApplication(sys.argv)

ШАГ 6: ДИЗАЙНЕР QT

Что еще лучше с PyQt5, так это то, что он поставляется со своим собственным дизайнером. Дизайнер — это консоль, на которой вы можете создать желаемый графический интерфейс, а программа выбрасывает для него код Python. Qt Designer поставляется в пакете pyqt5-tools, поэтому его необходимо установить, чтобы он работал. В конструкторе Qt вы можете размещать кнопки, ползунки и т.д. После того, как вы разместите их, вы можете сохранить файл как файл.ui.

После того, как файл сохранен как файл.ui, вам все равно нужно

После того, как файл сохранен как файл.ui, вам все равно нужно преобразовать его в файл.py, чтобы PyCharm мог его отобразить. Для этого откройте терминал или cmd и введите:

pyuic5 -x {saved_file_name.ui} -o {python_file.py}

Я сохранил свой файл как saved_file_name.ui. Терминал выдаст файл python и назовет его так, как вы просили. Затем вы можете открыть файл.py в PyCharm и добавить к нему логику.

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

В этом руководстве мы узнали об основах PyQt5 и о том, как использовать конструктор Qt. Мы узнали, что можем создавать пустые экраны, добавлять кнопки с помощью QPushButton, добавлять панели ввода с помощью QLineEdit, добавлять текст с помощью QLabels и упорядочивать все с помощью QVBoxLayout / QHBoxLayout. Фактически, PyQt5 — это очень большой модуль, используемый для создания множества настольных приложений с графическим интерфейсом пользователя. Хотя в python есть много модулей для приложений с графическим интерфейсом, большинство людей выбирают PyQt5, потому что он предлагает огромный выбор дизайнов и дизайнера для облегчения задач. Действительно, PyQt5 стоит изучить!

Читайте также:  Функции Бесселя в SciPy
Оцените статью
bestprogrammer.ru
Добавить комментарий