Как создать графический интерфейс на PyQt5?

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Как создать графический интерфейс на PyQt5: Полный практический гайд

Создание графического интерфейса (GUI) — важная часть разработки пользовательских приложений. Если вы работаете с Python, одним из самых мощных и удобных инструментов для создания интерфейсов является библиотека PyQt5.

В этой статье мы рассмотрим, как быстро и эффективно создавать интерфейсы на Python с помощью PyQt5, разберём ключевые компоненты, включая QLineEdit, QComboBox (выпадающий список), QCheckBox, QGraphicsView, и их сигналы. Также приведём практические примеры и объясним, как работает система событий в PyQt5.


Что такое PyQt5 и зачем он нужен?

PyQt5 — это набор Python-обёрток для библиотеки Qt, одного из самых популярных инструментов для создания кроссплатформенных GUI. С помощью PyQt5 можно создавать профессиональные настольные приложения с современным дизайном и богатым функционалом.

📌 Основные возможности PyQt5:

  • Множество готовых виджетов (QtWidgets).

  • Работа с окнами, кнопками, полями ввода и списками.

  • Поддержка сигналов и слотов (event-driven подход).

  • Интеграция с графикой через QGraphicsView.

  • Возможность кастомизации интерфейсов.


Установка PyQt5

bash
pip install PyQt5

Создание простого окна с помощью QApplication и QWidget

Каждое приложение PyQt5 начинается с создания объекта QApplication и основного окна на базе QWidget.

python
import sys from PyQt5.QtWidgets import QApplication, QWidget app = QApplication(sys.argv) window = QWidget() window.setWindowTitle("Простое окно") window.resize(300, 200) window.show() sys.exit(app.exec_())

Добавляем элементы управления (Widgets)

Теперь давайте добавим основные элементы интерфейса: поля ввода, кнопки, выпадающие списки и чекбоксы.

1. QLineEdit — Поле ввода текста

python

from PyQt5.QtWidgets import QLineEdit, QVBoxLayout, QPushButton

window = QWidget()
window.setWindowTitle("Пример QLineEdit")

layout = QVBoxLayout()

line_edit = QLineEdit()
line_edit.setPlaceholderText("Введите ваше имя")

button = QPushButton("Отправить")

def on_click():
    print(f"Привет, {line_edit.text()}!")

button.clicked.connect(on_click)

layout.addWidget(line_edit)
layout.addWidget(button)
window.setLayout(layout)
window.show()


2. QComboBox — Выпадающий список

python

from PyQt5.QtWidgets import QComboBox

combo = QComboBox()
combo.addItems(["Выберите вариант", "Python", "C++", "JavaScript"])

def on_selection_change(value):
    print(f"Вы выбрали: {value}")

combo.currentTextChanged.connect(on_selection_change)

layout.addWidget(combo)


3. QCheckBox — Чекбокс и работа с сигналами

python

from PyQt5.QtWidgets import QCheckBox

checkbox = QCheckBox("Согласен с условиями")

def on_checkbox_state(state):
    if state:
        print("Чекбокс отмечен")
    else:
        print("Чекбокс снят")

checkbox.stateChanged.connect(on_checkbox_state)
layout.addWidget(checkbox)


Работа с QGraphicsView — Отображение графики

Если вам нужно встроить графику в интерфейс, используйте QGraphicsView.

python

from PyQt5.QtWidgets import QGraphicsScene, QGraphicsView, QGraphicsEllipseItem

scene = QGraphicsScene()
ellipse = QGraphicsEllipseItem(0, 0, 100, 100)
scene.addItem(ellipse)

graphics_view = QGraphicsView(scene)
layout.addWidget(graphics_view)


Завершённый пример интерфейса на PyQt5

python

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QPushButton,
                             QLineEdit, QComboBox, QCheckBox, QGraphicsScene, 
                             QGraphicsView, QGraphicsEllipseItem)

def main():
    app = QApplication(sys.argv)
    window = QWidget()
    window.setWindowTitle("Полный интерфейс PyQt5")

    layout = QVBoxLayout()

    # QLineEdit
    name_input = QLineEdit()
    name_input.setPlaceholderText("Введите имя")
    layout.addWidget(name_input)

    # QComboBox
    combo = QComboBox()
    combo.addItems(["Выберите язык", "Python", "C++", "JavaScript"])
    layout.addWidget(combo)

    # QCheckBox
    checkbox = QCheckBox("Согласен с условиями")
    layout.addWidget(checkbox)

    # QGraphicsView
    scene = QGraphicsScene()
    ellipse = QGraphicsEllipseItem(0, 0, 100, 100)
    scene.addItem(ellipse)

    graphics_view = QGraphicsView(scene)
    layout.addWidget(graphics_view)

    # Кнопка
    button = QPushButton("Отправить")

    def on_click():
        print(f"Имя: {name_input.text()}")
        print(f"Язык: {combo.currentText()}")
        print(f"Согласие: {'Да' if checkbox.isChecked() else 'Нет'}")

    button.clicked.connect(on_click)
    layout.addWidget(button)

    window.setLayout(layout)
    window.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()


Полезные ссылки для изучения PyQt5


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

1. Что такое QtWidgets в PyQt5?

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


2. Как передавать данные между виджетами?

Используйте сигналы и слоты. Пример: button.clicked.connect(function).


3. Как добавить меню в приложение PyQt5?

Для этого используется класс QMenuBar.

python
from PyQt5.QtWidgets import QMainWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() self.menu = self.menuBar() file_menu = self.menu.addMenu("Файл")

4. Что такое QApplication и зачем он нужен?

Это главный объект приложения, который управляет всеми окнами и событиями. Он обязателен для любого GUI-приложения на PyQt5.


5. Как обработать нажатие кнопки?

Через подключение сигнала к слоту:

python
button.clicked.connect(your_function)

6. Можно ли использовать стили CSS для оформления интерфейса?

Да, с помощью метода setStyleSheet() можно применять стили аналогично CSS.

python
button.setStyleSheet("background-color: green; color: white;")

Заключение

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

Теперь вы можете начать создавать собственные полноценные программы с графическим интерфейсом на Python!

Новости