PyQt5 для начинающих

от автора

Привет, Хабр! Сегодня я вас хочу научить делать интерфейс на Python 3&PyQt5.

Установка PyQt5

Для того, чтобы установить PyQt5 в Windows или MacOS, откройте Командную строку или Терминал и введите:

pip3 install PyQt5

Для Linux, откройте Терминал и введите:

sudo apt-get update sudo apt-get upgrade sudo apt-get install python3-pyqt5

Hello, World!

А сейчас сделаем Hello World приложение. Создайте файл Python, откройте его и введите такой код:

from PyQt5.QtWidgets import * import sys   class MainWindow(QMainWindow): # главное окно     def __init__(self, parent=None):         super().__init__(parent)         self.setupUi()     def setupUi(self):         self.setWindowTitle("Hello, world") # заголовок окна         self.move(300, 300) # положение окна         self.resize(200, 200) # размер окна         self.lbl = QLabel('Hello, world!!!', self)         self.lbl.move(30, 30)   if __name__ == "__main__":     app = QApplication(sys.argv)     win = MainWindow()     win.show()     sys.exit(app.exec_())

Когда вы запустите, должна получится примерно такая картина:

Окно Hello, world на Ubuntu
Окно Hello, world на Ubuntu

Меняем шрифт надписи

А теперь поменяем шрифт надписи. Теперь код станет таким:

from PyQt5.QtWidgets import * from PyQt5.QtGui import * import sys   class MainWindow(QMainWindow): # главное окно     def __init__(self, parent=None):         super().__init__(parent)         self.setupUi()     def setupUi(self):         self.setWindowTitle("Hello, world") # заголовок окна         self.move(300, 300) # положение окна         self.resize(200, 200) # размер окна         self.lbl = QLabel('Hello, world!!!', self)         self.lbl.move(30, 30)         self.font = QFont() # создаём объект шрифта         self.font.setFamily("Rubik") # название шрифта         self.font.setPointSize(12) # размер шрифта         self.font.setUnderline(True) # подчёркивание         self.lbl.setFont(self.font) # задаём шрифт метке   if __name__ == "__main__":     app = QApplication(sys.argv)     win = MainWindow()     win.show()     sys.exit(app.exec_()) 

Пример рассчитан на то, что у вас уже установлен шрифт Rubik от Google Fonts. Если нет, его всегда можно скачать отсюда.

Более продвинутая разметка с XHTML

А теперь добавим XHTML. Например, так:

from PyQt5.QtWidgets import * import sys   class MainWindow(QMainWindow): # главное окно     def __init__(self, parent=None):         super().__init__(parent)         self.setupUi()     def setupUi(self):         self.setWindowTitle("Hello, world") # заголовок окна         self.move(300, 300) # положение окна         self.resize(200, 200) # размер окна         self.lbl = QLabel('<i>Hello</i>, <b>world</b>!!! <s><b>123</b></s>', self)         self.lbl.move(30, 30)   if __name__ == "__main__":     app = QApplication(sys.argv)     win = MainWindow()     win.show()     sys.exit(app.exec_()) 

Те, кто хотя бы немного знают XHTML, заметят, что надпись Hello сделана курсивом, слово world — жирным, а 123 — и вычеркнуто, и жирное.

Шпаргалка по XHTML

<b>123</b>

Жирный текст

<i>123</i>

Курив

<u>123</u>

Подчёркивание

<s>123</s>

Вычёркивание

<code>123</code>

Код (моноширным шрифтом)

<sup>123</sup>

Надстрочный текст

<sub>123</sub>

Подстрочный текст

<span style=»font-size:16pt;»>123</span>

Размер текста 16 пунктов

<span style=»color:#cc0000;»>123</span>

Красный текст

<span style=» background-color:#00ff00;»>123</span>

Текст на ярко-зелёном фоне.

<span align=»center»>123</span>

Выравнивание по центру

Кстати, я знаю такой конструктор HTML. Лично мне он по душе. Только сложно вставлять свои тэги.

Больше надписей!

А теперь сделаем 2 надписи:

from PyQt5.QtWidgets import * import sys   class MainWindow(QMainWindow): # главное окно     def __init__(self, parent=None):         super().__init__(parent)         self.setupUi()     def setupUi(self):         self.setWindowTitle("Hello, world") # заголовок окна         self.move(300, 300) # положение окна         self.resize(200, 200) # размер окна         self.lbl = QLabel('<i>Hello</i>, <b>world</b>!!!', self)         self.lbl.move(30, 30)         self.lbl2 = QLabel('<u>Ещё одна метка</u>', self)         self.lbl2.move(50, 50)   if __name__ == "__main__":     app = QApplication(sys.argv)     win = MainWindow()     win.show()     sys.exit(app.exec_())

На вторую я тоже добавил форматирование (подчёркивание), а у первой убрал 123.

Окно без resize()

Все предыдущие примеры использовали такую конструкцию:

self.resize(200, 200)

Но без этой конструкции можно обойтись, так как виджеты будут сами себе расчищать место.

Подсказки

Ко всем виджетам можно добавить подсказку. Например (привожу только важную для понимания часть кода):

self.lbl.setToolTip('This is a <b>QLabel</b>')

Эпилог

Вот и всё. В следующей части я постараюсь описать кнопки, меню и события.

До новых встреч!


ссылка на оригинал статьи https://habr.com/ru/post/651093/


Комментарии

Добавить комментарий

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