Python — язык программирования для решения разных задач: на нём можно как играть в угадайку чисел, так и создавать нейросети.
Но обычно работа с программой на Python идёт через командную строку: она отвечает тебе текстом, ты ей подаёшь на вход текст. Это хорошо, когда программа работает на сервере, но в бытовых ситуациях это не всегда удобно: хочется понажимать на кнопочки.
Сегодня мы научимся создавать графический интерфейс для программ — с кнопками, полями ввода и управление мышкой. А потом используем это для новых проектов.
Библиотека PySimpleGUI — простой интерфейс для Python
На самом деле у Python есть много библиотек, которые позволяют создать графический интерфейс — Tkinter, Qt, Remi или WxPython. Но проблема в том, что каждую из них нужно осваивать отдельно. Например, в одной удобно создавать графики, но неудобно — кнопки и надписи.
Чтобы сделать создание интерфейсов проще, придумали PySimpleGUI. Идея в том, чтобы объединить лучшие идеи из каждой библиотеки и написать для них внешнюю обёртку.
Кратко про Python Tkinter | Как создавать GUI Приложения
В итоге программисту на Python достаточно взять уже готовую команду создания кнопки, а отрисовку и внешний вид программа возьмёт на себя.
Ещё PySimpleGUI — это кросс-платформенное решение. Это значит, что интерфейсы, созданные с помощью этой библиотеки, будут работать одинаково на разных операционных системах.
Пара примеров, что можно сделать с PySimpleGUI:
Что для этого нужно
Для установки PySimpleGUI в командной строке компьютера или среды разработки пишем такую команду:
pip install pysimplegui
После этого библиотеку сразу можно подключать и использовать в проектах командой import PySimpleGUI . Но чтобы не писать каждый раз в коде такое громоздкое название, ей можно задать другое имя при подключении, например:
import PySimpleGUI as sg
Теперь нам достаточно написать sg вместо pysimplegui.

Создаём простой интерфейс
Сегодня мы посмотрим, как всё работает, и сделаем маленькую программу. Как разберёмся — возьмём проекты помасштабнее.
В редакторе кода создаём новый Python-файл и пишем такой код — в нём мы создаём простое окно с кнопкой и текстом:
# подключаем библиотеки import PySimpleGUI as sg import random # что будет внутри окна # первым описываем кнопку и сразу указываем размер шрифта layout = [[sg.Button(‘Новое число’,enable_events=True, key=’-FUNCTION-‘, font=’Helvetica 16’)], # затем делаем текст [sg.Text(‘Результат:’, size=(25, 1), key=’-text-‘, font=’Helvetica 16’)]] # рисуем окно window = sg.Window(‘Генератор случайных чисел’, layout, size=(350,100)) # запускаем основной бесконечный цикл while True: # получаем события, произошедшие в окне event, values = window.read() # если нажали на крестик if event in (sg.WIN_CLOSED, ‘Exit’): # выходим из цикла break # закрываем окно и освобождаем используемые ресурсы window.close()

Изучение TKinter за 8 минут / Разработка GUI программы на Python
13 GUI-библиотек Python
Перевод статьи markdrozdov “13 Python GUI Libraries”.
Python
Python это высокоуровневый язык программирования, он используется как язык общего назначения. Этот язык был создан Гвидо ван Россумом и впервые выпущен в 1991 году. Философия проектирования Python фокусируется на читаемости кода. Для этой цели в языке используется значительное количество пробелов.
Python предоставляет конструкции, позволяющие программировать к в малых, так и в больших масштабах. У этого языка очень большая стандартная библиотека. Он относится к языка с динамической типизацией. Также в нем есть автоматическое управление памятью.
Python поддерживает множество парадигм программирования, включая:
- объектно-ориентированную(ООП);
- императивную;
- функциональную;
- процедурную.
Графический интерфейс пользователя (GUI)
GUI это человеко-компьютерный интерфейс. Другими словами, это способ, с помощью которого люди могут взаимодействовать с компьютерами.
Он использует окна, значки, меню. Манипулировать GUI можно как с помощью мышки, так и с помощью клавиатуры.
GUI-библиотека
GUI-библиотека содержит виджеты. Виджеты это наборы графических элементов управления.
При создании GUI программы обычно используется каскадный способ. Графические элементы управления добавляются поверх друг друга.
Python GUI
Когда вы пишете приложение с помощью Python, вам для этого понадобится использовать GUI.
Существует много вариантов Python GUI. Есть больше 30 кросс-платформенных фреймворков для программирования GUI на Python. 13 из них перечислены и кратко охарактеризованы ниже. (Возможно, вам будут интересны и другие библиотеки Python, о которых мы писали ранее).
1. Tkinter
Tkinter это набор инструментов, который может формировать GUI с помощью Python. Он позволяет вам запускать сценарии на Python в GUI-формате. Ссылка ведет на страницу с руководством по Tkinter.
2. Flexx
Многие GUI-библиотеки Python основаны на библиотеках, написанных на других языках, таких как C ++. Например, wxWidgets и libavg. Flexx создана на Python. Для отображения GUI использует веб-технологию.
3. CEF Python
Этот фреймворк нацелен на Windows, MAC OS и Linux. Основан на Google Chromium. Основное внимание в нем уделяется облегчению использования встроенного браузера в сторонних приложениях.
4. Dabo
Цель этого фреймворка – WxPython. Это трехуровневый фреймворк для разработки кросс-платформенных приложений.
5. Kivy
Kivy основан на OpenGL ES 2. У него есть собственный multi-touch для каждой отдельной платформы. Это событийно-ориентированный фреймворк, который прекрасно подходит для разработки игр.
6. Pyforms
Pyforms это фреймворк Python 2.7/3.x для разных окружений, используемый для разработки GUI приложения. В нем поощряется повторное использование кода.
7. PyGObject
С помощью PyGObject вы можете писать на Python приложения для проекта GNOME. Также можно писать приложения на Python, использующие GTK+.
8. PyQt
Qt это кросс-платформенный фреймворк. Он написан на С++. Это очень полная библиотека, включающая много инструментов и API. Широко используется во многих отраслях. Охватывает множество платформ.
9. PySide
Обёртка для Qt. PySide и PyQt отличаются тем, что последний является коммерчески доступным.
10. PyGUI
PyGUI предназначен для платформ Unix, Macintosh и Windows. Фокус этого MVC-фреймворка заключается в том, чтобы вписываться в экосистему Python с максимальной легкостью.
11. libavg
Это сторонняя библиотека, написанная на С++. Обладает следующими особенностями:
- показ элементов в форме переменных Python;
- система управления событиями;
- таймеры;
- поддержка логов.
12. PyGTK | PyGObject
«GTK+», широко используемая в Linux, является «GTK + «обёртка из» PyGTK». По сравнению с Kivy и PyQt, PyGTK очень легок для платформ Unix, Macintosh, Windows.
Этот MVC-фреймворк разработан Грегом Эвингом из университета Кентербери (Новая Зеландия). Его главный фокус – как можно более простая адаптация к экосистеме Python.
13. wxPython
Обертка кросс-платформенного GUI для Python на основе wxWidgets. Написана на С++.
Приведенный выше список GUI-фреймворков покрывает большую часть нужд разработчика. Выбор зависит от ваших потребностей.
Источник: techrocks.ru
Python PyQt5: современные графические интерфейсы для Windows, MacOS и Linux
Python регулярно включают в разнообразные рейтинги лучших языков программирования благодаря большому сообществу и легко читаемому синтаксису. Более того, Python под силу создать современный графический пользовательский интерфейс — GUI — для обычных скриптов. В руководстве уделим внимание модулю для разработки GUI PyQt5 , но стоит также упомянуть аналоги: Tkinter и WxWidget .
Статья подойдет в том числе и начинающим программистам, поэтому, не теряя времени, приступаем!
Содержание руководства:
1. Установка и настройка PyQt5
Скачайте и установите последнюю версию Python для вашей системы, а если Python уже на месте, то установите пакеты при помощи следующей команды (откройте командную строку, введите и нажмите Enter):
pip install pyqt5
2. Основы PyQt5
Теперь на вашем компьютере сохранен пакет PyQt5 , поэтому давайте начнем с написания первого окна графического интерфейса. Откройте ваш любимый текстовый редактор или IDE и выполните приведенный ниже код:
# Построение Windows GUIimport sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabeldef main():
app = QApplication(sys.argv)
win = QMainWindow()
win.setGeometry(400,400,400,300)
win.setWindowTitle(«Pyqt5 Tutorial»)
win.show()
sys.exit(app.exec_())
main()
Результат выполнения программы:
Теперь разберем код окна интерфейса с заголовком сверху. Если обсуждать кратко, то в первую очередь импортируем PyQt5 и его классы, полезные в создании виджета GUI, а затем создаем функцию main() для реализации оконного интерфейса.
- QMainWindow() — словно контейнер, содержащий все виджеты, такие как кнопки, текст, поле ввода и т. д.
- SetGeometry() — один из методов QMainWindow() , устанавливает размер окна. Синтаксис: setGeometry(x, y, длина, ширина) .
- SetWindowTitle() — устанавливает заголовок окна.
- Win.show() — создает и отображает весь разработанный интерфейс.
- Sys.exit(app.exec_()) — устанавливает, что конкретное окно не закроется без нажатия на кнопку с крестиком. Без этой строчки кода GUI-программа завершится через секунду после выполнения.
Label Text — это текст, отображаемый внутри окна. С написанием Label Text в PyQt5 вам поможет виджет Qlabel .
Выполните следующий код:
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
def main():
app = QApplication(sys.argv)
win = QMainWindow()
win.setGeometry(400,400,400,300)
win.setWindowTitle(«Pyqt5 Tutorial»)#Label Text
label= QLabel(win)
label.setText(«Hi this is Pyqt5»)
label.move(100,100)win.show()
sys.exit(app.exec_())
main()
Результат выполнения программы:
Если кратко, то вызываем метод Qlabel() и передаем в него переменную QMainWindow .
- Метод SetText() устанавливает Label Text, в качестве аргумента принимает только строковые данные.
- Метод Move(x, y) применяется для установки положения Label Text внутри окна.
4. События и кнопки
Кнопки — важная часть любого программного обеспечения, ведь именно кнопка определяет действие пользователя, а следовательно, и результат работы программы тоже. Для создания кнопок в PyQt5 придётся применить другой виджет под названием QtWidgets , выполните следующий код:
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
def main():
app = QApplication(sys.argv)
win = QMainWindow()
win.setGeometry(400,400,400,300)
win.setWindowTitle(«Pyqt5 Tutorial»)#Button
button = QtWidgets.QPushButton(win)
button.setText(«Hi! Click Me»)
button.move(100,100)win.show()
sys.exit(app.exec_())
main()
Результат выполнения программы:
В коде вышеизложенного примера переменная QMainWindow передается в метод из Qwidget под названием QPushbutton . Далее разберем код примера по пунктам.
- SetText() устанавливает название для кнопки, как можно увидеть на приведенном выше изображении.
- Move() снова применяется для установки положения кнопки в окне по координатам на осях x и y.
Теперь пришел черед событийно-ориентированного программирования (Event-Driven-Programming)! Проще говоря, нужно определить действие для кнопки, то есть, если пользователь на нее нажмет, то что-то должно произойти. Ознакомьтесь со следующим кодом, а дальше рассмотрим подробные объяснения:
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
def click():
print(«Hy Button is clicked!»)
def main():
app = QApplication(sys.argv)
win = QMainWindow()
win.setGeometry(400,400,400,300)
win.setWindowTitle(«Pyqt5 Tutorial»)#Button Click
button = QtWidgets.QPushButton(win)
button.setText(«Hi! Click Me»)
button.move(100,100)
button.clicked.connect(click)win.show()
sys.exit(app.exec_())
main()
Теперь в примере определяется не только главная функция по имени main() , но и функция по имени click() , передающаяся в качестве параметра для button.clicked.connect() в main() . Таким образом указывается конкретная функция, срабатывающая при нажатии на конкретную кнопку.
Запустив такой код и нажав на кнопку, вы увидите вывод на экране консоли. Дело за вами, что же написать внутри функции click() ! Протестируйте код на вашей операционной системе.
5. Поля ввода
Поля ввода также называются текстовыми полями — это области для пользовательского ввода информации. Для объявления поля ввода в PyQt5 применяется специальный виджет QlineEdit() , а в него, как обычно, передается в качестве параметра QMainWindow .
Посмотрите на следующий код и обратите внимание на его результат:
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
def main():
app = QApplication(sys.argv)
win = QMainWindow()
win.setGeometry(400,400,400,300)
win.setWindowTitle(«Pyqt5 Tutorial»)#Entry Box / Text Box
textbox = QtWidgets.QLineEdit(win)
textbox.move(100, 100)
textbox.resize(180,40)win.show()
sys.exit(app.exec_())
main()
Результат выполнения программы:
- Resize(width, height) изменяет размер виджета поля ввода.
6. Окна сообщений и всплывающие окна
Окна сообщений и всплывающие окна (popups) — это альтернативные маленькие окна, например, вы создаете программу для регистрации электронной почты, а пользователь не ввел надежный пароль, тогда вы предупреждаете пользователя об этом через окна сообщений.
Для создания окон сообщений в PyQt5 применяется виджет QMessageBox , он опять таки принимает QMainWindow в качестве параметра.
Проанализируйте следующий код:
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
def main():
app = QApplication(sys.argv)
win = QMainWindow()
win.setGeometry(400,400,400,300)
win.setWindowTitle(«Pyqt5 Tutorial»)#Message Box
msg = QtWidgets.QMessageBox(win)
msg.setWindowTitle(«Pyqt5 Alert»)
msg.setText(«Message box in Pyqt5!»)
msg.exec_()win.show()
sys.exit(app.exec_())
main()
Результат выполнения программы:
- SetWindowTitle() устанавливает заголовок для окна сообщения.
Также в окне сообщения всегда можно показать специальный значок, как показано в следующем коде и результате его выполнения:
msg = QtWidgets.QMessageBox(win)
msg.setWindowTitle(«Pyqt5 Alert»)
msg.setText(«Message box in Pyqt5!»)
msg.setIcon(QtWidgets.QMessageBox.Critical)
msg.exec_()
Результат выполнения программы:
Ниже приведен список допустимых для окон сообщений значков:
- QMessageBox.Warning
- QMessageBox.Critical
- QMessageBox.Information
- QMessageBox.Question
Выводы
Что же, руководство предоставило вам все необходимые знания для самостоятельного создания графических пользовательских интерфейсов на PyQt5 .
- Пусть говорят… расходящиеся гистограммы!
- 5 способов выйти из вложенного цикла в Python
- Осваиваем веб-скрэпинг на Python
Источник: medium.com