Connect with us

Обучение

Библиотека Python: Работа с PyQt

UX/UI в ваших руках

Сегодня мы познакомимся с серьезным инструментом для создания интерфейсов — PyQt

Что такое PyQt

PyQt — реализация мощного фреймворка Qt для языка Python. В основном, для создания GUI, используется именно он, хотя в питоне есть и встроенный фреймворк — tkinter.  Основное понятие в PyQt — это виджет. Виджет — это своеобразный элемент управления, которые мы можем «подогнать» под свой дизайн, свой интерфейс.

Как же создается интерфейс для приложения в PyQt? Сделать это можно как программно, через код, так и в дизайнере — специальном GUI-конструкторе. Продвинутые разработчики рекомендуют использовать именно программный способ — в этом случае вы получаете полный контроль над интерфейсом и понимаете суть работы с ним.

Пишем интерфейс

Установить PyQt можно через консоль — командой  pip install pyqt5 , либо вбив PyQt5 в настройках интерпретатора.

Как мы уже писали выше — будет неплохо научиться писать интерфейсы через код, а не собирать его посредством подхода WYSIWYG. Для этого в PyQt есть встроенная среда для разработки графических интерфейсов (GUI) под названием QtDesigner. Сейчас же мы разберем простой пример, где мы «вручную» создадим элемент графического интерфейса — обычное окно. Для начала мы импортируем все виджеты из библиотеки pyqt — объекты для отображения интерфейса:  from PyQt5.QtWidgets import QApplication, QWidget . QWidget — это базовый класс для всех элементов.

Далее пропишем объект-приложение. Это необходимо для возможности запуска приложения:  app = QApplication(sys.argv) . Команда обязательная. Создаем объект класса —  w = QWidget() . Теперь пропишем параметры нашего окна (в пикселях):  w.resize(350, 250) . Следующий параметр позволяет нам запускать окно там, где необходимо на экране:  w.move(500, 500) . Далее сделаем нужный заголовок:  w.setWindowTitle(‘Storydigital.ru’)  и сделаем его «видимым» командой show:  w.show() .  Запуск приложения осуществляется так:  sys.exit(app.exec_()) 

Полный листинг:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = QWidget()
    w.resize(350, 250)
    w.move(500, 500)
    w.setWindowTitle('Digital2.ru')
    w.show()

    sys.exit(app.exec_())

Результат:

Продвинутый вариант

Теперь рассмотрим более сложный пример с наличием toolbar’а в нашем мини-приложении. Здесь дополнительно импортируется модуль QMainWindow для создания главного окна. Там где будут располагаться все элементы интерфейса. Создавая класс мы наследуемся именно от него —  class Example(QMainWindow) . Так же мы вызываем метод класса —  self.initUI()  — он отвечает за инициализацию этого самого окна. В этом примере мы создаем кнопку в панели инструментов —  self.toolbar = self.addToolBar(‘Exit’) . Пока у нас один «экшн» — это выход из программы. Он реализуется с помощью обработчика нажатия (triggered — проверка нажатия кнопки). Связываем событие нажатие с обработчиком. В нашем случае он стандартный. Полная конструкция выглядит так:  exitAction.triggered.connect(qApp.quit) 

Полный листинг:

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
    
    def __init__(self):
        super().__init__()
        self.initUI()
        
    def initUI(self):
        # action - это то действие, которое будет выполняться при нажатии
        exitAction = QAction(QIcon('exit.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(qApp.quit)
        
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('SuperApp')
        self.show()
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Результат:

Подключение интерфейса

Допустим, вы нарисовали свой интерфейс через приложение Qt Designer. У нас есть файл .ui. Как его связать с кодом приложения? Для этого используется модуль uic из библиотеки PyQt5. Конкретно — функция  uic.loadUi(‘interface.ui’, self). 

Полный листинг:

from PyQt5 import QtWidgets, uic
import sys

class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        uic.loadUi('Interface.ui', self)
        self.btnQuit.clicked.connect(QtWidgets.qApp.quit)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

 

Click to comment

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Телефон не заряжается. Что делать?

Гаджеты

Wink Интерактивное ТВ на Android: Настройка, цена, решение проблем

Телевидение

Расшифровка SMART у HDD. Как читать ошибки жесткого диска?

Гаджеты

Интерфейс на Python: пишем с помощью PyQt

Обучение



  • Яндекс.Метрика

Карьера, тренды, диджитал, образование, разработка, DevOps

Connect