- Есть ли GUI Designer для Python?
- просека
- Быстро
- Лучшие GUI библиотеки Python 2020
- Что такое GUI?
- Kyvi
- PyQT
- Tkinter
- PySide
- WxPython
- Выводы
- Четыре способа написать Hello world, или инструменты для создания GUI на Python
- Tkinter
- Пример работы
- Что нужно учитывать
- Eel
- Пример работы
- Что нужно учитывать
- PyQt
- Пример работы
- Что нужно учитывать
- PyTouchBar
Есть ли GUI Designer для Python?
Существует ли GUI IDE для программирования на python, так же как в Java есть netbeans?
Я хотел, чтобы мы могли перетаскивать тестовые поля и метки так же, как мы делаем в компонентах Swing, используя netbeans или eclipse.
Или в netbeans или в самом затмении присутствует дополнение?
Посмотрели ли вы в Центре программного обеспечения Ubuntu некоторые элементы, перечисленные в разделе «Инструменты разработчика»> «Python»?
Я лично рекомендую попытаться создать что-то вручную, следуя руководству, потому что, если вы не понимаете, как элементы, которые вы рисуете, взаимодействуют друг с другом, вам будет трудно заставить работать кнопки и все такое.
Обратите внимание, что для любых нетривиальных приложений gtk, которые не используют glade или что-то подобное, они будут выглядеть довольно некрасиво и очень быстро. Даже используя glade, у вас все еще будет много возможностей узнать о API pygtk.
просека
Если вам нужен дизайнер графического интерфейса wysiwyg, Glade — ваш лучший выбор:
- во-первых, установить glade из центра программного обеспечения
- создать свой графический интерфейс, сохранить его, скажем, myapp.glade
- Перейдите на вкладку сигналов и настройте обратный вызов, например, on_window1_destroy
- В вашей программе на Python скажите GTK, чтобы загрузить определения пользовательского интерфейса
import gtk class MyApp (object): def __init__(self): self.builder = gtk.Builder() self.builder.add_from_file("myapp.glade") self.builder.connect_signals(self) def run(self): self.builder.get_object("window1").show_all() gtk.main() def on_window1_destroy(self, *args): gtk.main_quit() MyApp().run()
После того, как все настроено, вы можете погрузиться прямо в учебник Glade (как упоминал Джереми Керр в своем ответе). Начните с изучения различных вариантов компоновки и сигналов.
Быстро
Когда вы почувствуете себя комфортно с glade, вы можете начать использовать его через Quickly, который представляет собой набор программ, облегчающих выполнение общих задач при разработке программного обеспечения. Он заботится о переводах, хранении конфигурации, упаковке, интеграции панели запуска, включая PPA, и многом другом:
sudo apt-get install quickly quickly create ubuntu-application hello-world cd hello-world/
Быстро сейчас создаст огромный проект со всем необходимым. Графический интерфейс , файлы перевода, конфигурация через desktopcouch и так далее.
Вы увидите, как быстро настроит для вас несколько окон (основное приложение, конфигурация и диалог о программе). Чтобы начать редактирование вашего GUI:
- бегать quickly design
- Чтобы получить код приложения, запустите quickly edit
- Перейти к HelloWorldWindow.py файлу
- Теперь начните добавлять обработчики сигналов и логику.
Наконец, чтобы запустить приложение, введите quickly run .
На этом этапе вы можете перейти к документации PyGTK, чтобы узнать о сигналах, сигнатурах их обработчиков, методах различных виджетов и так далее.
- PyGTK 2.0 Справочное руководство
- Справочное руководство PyGObject
- Быстро виджеты (не обязательно)
Смотрите также некоторые связанные вопросы:
Лучшие GUI библиотеки Python 2020
Будучи Python-разработчиком, вы должны знать топ-5 GUI библиотек, который помогут добавить графический интерфейс в приложение.
Что такое GUI?
GUI (графический интерфейс пользователя) — это форма интерфейса, которая позволяет пользователю взаимодействовать с электронным устройством с помощью графических иконок и аудио-индикаторов вместо текстовых интерфейсов. GUI появился в ответ на кажущуюся крутой кривую изучения CLI (интерфейса командной строки), которая требует команд, набираемых с клавиатуры.
GUI-фреймворки легко доступны — они бесплатны и имеют открытый исходный код. В Python есть широкий спектр вариантов: от кроссплатформенных до заточенных под конкретную платформу.
Kyvi
Kyvi — это бесплатная библиотека Python с открытым исходным кодом. Она используется для разработки мобильных приложений и других приложений широкого назначения с естественным пользовательским интерфейсом. Распространяется по лицензии MIT и может работать на:
PyQT
PyQT — одна из самых любимых кроссплатформенных Python-библиотек, реализующих библиотеку Qt (принадлежит Nokia) из одноименного фреймворка для разработки приложений. Сейчас PyQT доступна на Unix/Linux, Windows, macOS и Sharp Zaurus. Она объединяет лучшее из Python и Qt. И только разработчик решает, как создавать программу: с помощью кода или Qt Designer для дизайна визуальных элементов.
PyQT доступна как по коммерческой, так и по лицензии GPL. Хотя некоторые функции и недоступны в бесплатной версии, если приложение имеет открытый исходный код, ее можно свободно использовать.
Tkinter
Tkinter — связка Python с набором GUI-инструментов Tk. Это стандартный интерфейс-Python. Он доступен на Linux, Windows и macOS с установленными Python. Имя Tkinter происходит от Tk interface.
PySide
PySide — это библиотека с открытым исходным кодом, которая также предлагается связь с Qt. Qt – это кроссплатформенные приложение и UI-фреймворк, которые позволяют разработчикам писать и разворачивать приложения на разных ОС без переписывания исходного кода.
Объединяя возможности Qt и Python, PySide предоставляет богатство фреймворка Qt для разработчиков, которые пишут ПО на Python и представляет первоклассную платформу для разработчиков на всех основных системах.
WxPython
WxPython — это смесь из библиотеки классов WxWidgets (ранее — WxWindows) для C++ и Python. Ее можно найти здесь: https://www.wxpython.org/. А вот ее Wiki: https://wiki.wxpython.org/.
Выводы
Хорошее знание любого из GUI-фреймворков очень ценно. Вы сможете создавать приложения с полноценным графическим интерфейсом.
Четыре способа написать Hello world, или инструменты для создания GUI на Python
После написания программы ее можно модифицировать и добавить графический интерфейс — с Python это проще, чем кажется. Для программирования красивого и функционального GUI иногда достаточно простого знания html и css.
Под катом — подборка некоторых инструментов для создания интерфейсов на Python. Сохраняйте статью в закладки и предлагайте свои варианты в комментариях!
Привет! Меня зовут Влад и уже более пяти лет я пишу на Python. Успел перепробовать многое — от олимпиадного программирования и решения исследовательских задач до BackEnd-разработки и RPA.
Могу сказать однозначно: если с программой работаете не только вы, но и, например, ваши коллеги, для нее нужно сделать интерфейс. При этом неважно, какую задачу она решает. Поэтому я собрал подборку инструментов для создания GUI на Python и мини-инструкции по работе с ними.
Если вам интересен такой формат, напишите, какую тему можно разобрать в будущем. За самую интересную идею отправим плюшевого тирекса и другой мерч Selectel.
Tkinter
Наверное, каждый заклинатель змей пробовал работать с Tkinter. Для меня это была одна из тех библиотек, с которой началось знакомство с возможностями Python.
Tkinter — это один из самых известных модулей для программирования интерфейсов под Windows, Linux и Mac.
- Простая установка. Достаточно установить модуль и импортировать его в программу.
- Интуитивная логика. Все просто: вызываете объект, создаете и добавляете графические элементы.
Когда-то давно я писал программу для «местных бухгалтеров», которая сравнивала электронные таблицы. Нужно было сделать интерфейс, чтобы заказчики могли работать с программой самостоятельно. И для этой задачи Tkinter хватило с запасом.
С помощью этого модуля можно делать простые десктопные приложения. Исходя из моего опыта, Tkinter отлично подходит для начинающих исследователей, которым наскучил софт вроде LabVIEW и хочется написать свой интерфейс для расчетов.
Пример работы
Для создания простой кнопки, которая при нажатии будет выводить Hello world, достаточно импортировать модуль, инициализировать фрейм и добавить соответствующий объект.
# импортируем модуль from tkinter import * def hello_world(): print("Hello world") # создаем окно main main = Tk() # добавляем кнопку, настраиваем ее форму и цвет # при нажатии сработает функция hello world btn = Button(main, width=20, height=7, text="Кнопка", bg="white", fg="black", command=hello_world) btn.pack() main.mainloop()
Пример работы программы на Tkinter, простая кнопка.
Что нужно учитывать
Tkinter — это одновременно простой и сложный инструмент для создания GUI. Так, при построении «масштабных» интерфейсов возникают трудности: работать можно только с кодом, а механика размещения элементов не всегда очевидна.
Вы можете использовать сетки grid и менеджеры геометрии place и pack. Наверное, изучение этих инструментов — самый тяжелый этап при погружении в Tkinter. Особенно, если вы хотите научиться делать адаптивные интерфейсы.
Способы размещения элементов в Tkinter.
Eel
Знаете html и css — воспользуйтесь модулем Eel. С помощью него можно создавать веб-интерфейсы в виде отдельных программ. Яркий пример, который написан на Electron, прародителе Eel, — Discord.
С помощью библиотеки Eel можно не только написать красивый интерфейс на html и css, но и динамические анимации на базе JavaScript.
Пример работы
Шаг 1. Сначала нужно создать html-документ и добавить в него разметку.
Шаг 2. Далее необходимо запустить html-документ с помощью Eel.
import eel eel.init("") eel.start("main.html", size=(700, 700))
Готово — после запуска программа откроет в браузере html-документ project/main.html:
Что нужно учитывать
Модуль создает GUI на базе ядра Chromium. Плохо это для вашего проекта или нет — знаете только вы. Но потенциально могут быть проблемы с оптимизацией, потреблением оперативной памяти.
Однако с помощью Eel можно выиграть в гибкости и упростить разработку сложных адаптивных приложений — достаточно использовать старый-добрый flexbox. Например, если вам нужно приложение для просмотра больших таблиц, на базе Eel можно просто создать GUI с html-фреймом Google Sheets.
При этом пользователь приложения как бы выполняет роль клиента и сервера одновременно. Eel запускает localhost:8000 и открывает браузер — Chrome или Windows Edge — с флагом —app , который позволяет задавать размер окна по умолчанию. Проект можно скомпилировать с помощью PyInstaller или Auto PY to EXE и распространять как исполняемый файл.
Интересен Python? Мы собрали самые интересные и популярные запросы разработчиков в одном файле! По ссылке — материалы по геймдеву, машинному обучению, программированию микроконтроллеров и графических интерфейсов.
PyQt
До сих пор мы рассматривали модули, на базе которых можно именно написать интерфейс. Но есть более удобный (имхо) и профессиональный инструмент для создания GUI — библиотека PyQt. Ее преимущество — совместимость с билдером Qt Designer, который предоставляет набор готовых интерфейсных элементов.
Qt Designer, интерфейс редактора.
Пример работы
Для создания интерфейса достаточно установить PyQt через пакетный менеджер pip, набросать интерфейс в QtDesigner, сохранить его в формате .ui и подключить к программе.
Посмотрим на примере, как написать простой интерфейс и обрабатывать нажатия кнопки (pushButton):
# подключаем необходимые пакеты from PyQt6 import uic from PyQt6.Widgets import QApplications # эта функция срабатывает при нажатии кнопки def hello_world(): print("Hello world") # подключаем файл, полученный в QtDesigner Form, Window = uic.loaduiType("interface.ui") app = QApplication([]) window, form = Window(), Form() form.setupUi(window) window.show() # настраиваем сценарий для элемента pushButton form.pushButton.clicked.connect(hello_world) # запускаем окно программы app.exec()
После запуска и клика по кнопке программа напечатает Hello world — проверьте это самостоятельно. Но настоящие преимущества PyQt раскрываются во время разработки сложных интерфейсов.
В своей практике я использовал PyQt для кроссплатформенных GUI под задачи по автоматизации. Яркий пример — конвертер статей из Google-документов на Хабр, о котором я рассказывал в предыдущей статье.
Что нужно учитывать
Встроенных элементов Qt почти всегда было достаточно. Однако иногда могут встречаться объекты, которые некорректно срабатывают. Например — QTextBrowser, который не умеет считывать сложный html-код вроде blockquote.
Главное преимущество PyQt — подробная документация, в которой хорошо описаны все интерфейсные элементы, их параметры и типы данных. Поверьте, для работы с этим фреймворком справочные материалы понадобятся не раз. Но если вам ближе видеоформат, могу смело порекомендовать уроки Олега Шпагина.
PyTouchBar
С 2016 года у некоторых моделей MacBook Pro есть сенсорная OLED-панель. По сути, она просто заменяет функциональные клавиши. Но с ней чуть интересней: на тачбар можно вывести закладки и даже медиаэлементы.
С помощью библиотеки PyTouchBar можно сделать свой интерфейс для тачбара и даже создать игру — без погружения в дебри драйверов и разработки на Swift. О том, как это сделать, мы подробно рассказали в отдельной статье.
Игра с динозавриком Google на тачбаре.