ОБСУЖДЕНИЕ Статья 

[Python] - #2 Добавление виджетов на PyQt5

2 ответов 6 тыс.
Автор темы
QLabel и QPushButton — лишь отправная точка: PyQt5 содержит десятки готовых виджетов, от QLineEdit (однострочное поле ввода) и QComboBox (выпадающий список) до QPixmap (изображения) и QSplitter. Разобравшись на их примере с базовым принципом — создали виджет, настроили свойства, добавили в контейнер компоновки и подключили сигнал — вы сможете так же легко подключать и остальные элементы. В этой статье мы закрепим этот принцип на связке текста и кнопки, которую можно масштабировать до полноценного интерфейса.

Виджеты в PyQt5​

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

QLabel и QPushButton​

Давайте узнаем, что эти за виджеты:​
  • QLabel - Создает текст, в вашем окне​
  • QPushButton - Создает обычную кнопку, вашем окне.​
​

Создаем программу​

Вы узнали что это за виджеты, а теперь давайте напишем эту код на пайтон, и добавим эти 2 виджета:

​
Примечание: Напоминаю, что перед началом кода, у вас должны быть знание о ООП, хотя бы половину. [ВСЕ ПОДРОБНОСТИ ЗДЕСЬ - ООП на Python: концепции, принципы и примеры реализации]​
Так давайте приступимся к работе, вы создаете простой файл с форматом [py] и пишем вот такой код:

​

Подключаем Библиотеки:
Python:
from Pyqt5 import QtCore, QtWidgets
Мы подключили необходимы библиотеки для работы PyQt5.

Создаем родительский класс и конструктор:
Python:
class MyWindow(QtWidgets.QtWidget):
    def __init__(self, parent=None):
    QtWidgets.QWidget.__init__(self, parent)
Класс MyWindow наследуют на QtWidgets тоесть ранее которые мы подключали библиотеку. MyWindow является родительский и главный класс.

Добавляемс виджеты и событии:

Я тут подумал, что наша кнопка не будет обычной кнопкой <3, а при нажатии на него закроется данное окно, тоесть событие:
Python:
self.my_text = QtWidgets.QLabel("Привет codeby!") # Текст

self.lmy_text.setAlignment(QtCore.Qt.AlignHCenter) # Центр текста

self.my_btn = QtWidgets.QPushButton("Закрыть окно") # Кнопка
Тоесть мы создали 2 виджет это - QLabel и QPushButton, в QLabel'e мы добавили AlignHCenter который наследуются на QtCore, он позволяет делать текст в центре окна.

Добавляем компоненты в контейнер:​

Python:
self.vbox = QtWidgets.QVBoxLayout()

self.vbox.addWidget(self.my_btn)

self.vbox.addWidget(self.my_text)

self.setLayout(self.vbox)

self.my_btn.clicked.connect(QtWidgets.qApp.quit)
Данный код, создает объект надписи и кнопки(который мы ранее объявляли) и контейнер, затем добавляют компоненты в контейнер а сам контейнер - в основное окно.

Потом мы для кнопки, объявили функцию, который при нажатии завершается окно, с помощью clicked.connect(QtWidgets.qApp.quit)

Настраиваем окно, размер заголовок:
Python:
if __name__ == "__main__":

import sys

app = QtWidgets.QApplication(sys.argv)

window = MyWindow()[

window.setWindowTitle('My window!')

window.resize(300, 70)

window.show()

sys.exit(app.exec_())
Для окно, мы дали заголовок "My Window" и дали ему размер. Дальше мы создали экземпляр класса Window = MyWindow() и с помощью window.show() показываем сам окно. Выражение sys.exit(app.exec_()) позволяет выйти с окна(<3).

Скомпилируем код:​

Python:
from PyQt5 import QtCore, QtWidgets

class MyWindow(QtWidgets.QtWidget):
    def __init__(self, paret=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.my_text = QtWidgets.QLabel('Привет codeby!')
        self.my_text.setAlignment(QtCore.Qt.AlignCenter)
        self.my_btn = QtWidgets.QPushButton('Закрыть окно')
        self.vbox = QtWidgets.QVboxLayout()
        self.vbox.addWidget(self.my_text)
        self.vbox.addWidget(self.my_btn)
        self.setLayout(self.vbox)
        self.my_btn.clicked.connect(QtWidgets.qApp.quit)

if __name__ == '__maim__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.setWindowTitle('My Window!')
    window.resize(300, 70)
    window.show()
    sys.exit(app.exec_())

Итоги:​

​

Снимок экрана от 2021-06-07 12-14-07.png


Создание виджетов на PyQt5

Код получился конечно не такой большой, но мы смогли создать 2 виджета, это текст и кнопка.Надеюсь, данная статься была полезна для вас. Удачи!

[Буду благодарен, если найдете ошибки в тексте или в коде.]​
 
Последнее редактирование модератором:
  • Нравится
Реакции: Сатана
1
Привет. Как по мне — не очень смотрится форматирование «по середине»
 
  • Нравится
Реакции: Сатана
1