Визуальный gui конструктор для python

@Hateman31 в смысле рабочим? Импортируете как пакет и используете. Есть у вас, например, ui.py, в нем класс class Ui_mahsoft(object):
А в файле main.py

Методы setupUi() и retranslateUi() генерируются сами.

Вообще есть неплохая книга — Николай Прохоренок: Python 3 и PyQt. Разработка приложений (2012). Все доступным языком, интерфейсы описыватся ручками для наглядности.

Эта статья предназначена для тех, кто только начинает своё знакомство с созданием приложений с графическим интерфейсом (GUI) на Python. В ней мы рассмотрим основы использования PyQt в связке с Qt Designer. Шаг за шагом мы создадим простое Python GUI приложение, которое будет отображать содержимое выбранной директории.

Что нам потребуется

Нам понадобятся PyQt и Qt Designer, ну и Python, само собой.

В этой статье используется PyQt5 с Python 3, но особых различий между PyQt и PySide или их версиями для Python 2 нет.

Windows: PyQt можно скачать здесь. В комплекте с ним идёт Qt Designer.

macOS: Вы можете установить PyQt с помощью Homebrew:

$ brew install pyqt5

Скачать пакет с большинством компонентов и инструментов Qt, который содержит Qt Designer, можно по этой ссылке.

Linux: Всё нужное, вероятно, есть в репозиториях вашего дистрибутива. Qt Designer можно установить из Центра Приложений, но PyQt придётся устанавливать через терминал. Установить всё, что нам понадобится, одной командой можно, например, так:

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

Если вы видите сообщение, что такой команды нет или что-то в таком роде, попробуйте загуглить решение проблемы для вашей операционной системы и версии PyQt.

Если вы используете Windows, то, скорее всего, путь C:Python36Scripts (измените 36 на вашу версию Python) не прописан в вашем PATH . Загляните в этот тред на Stack Overflow, чтобы узнать, как решить проблему.

Дизайн

Основы

Теперь, когда у нас всё готово к работе, давайте начнём с простого дизайна.

Откройте Qt Designer, где вы увидите диалог новой формы, выберите Main Window и нажмите Create.

После этого у вас должна появиться форма — шаблон для окна, размер которого можно менять и куда можно вставлять объекты из окна виджетов и т.д. Ознакомьтесь с интерфейсом, он довольно простой.

Теперь давайте немного изменим размер нашего главного окна, т.к. нам не нужно, чтобы оно было таким большим. А ещё давайте уберём автоматически добавленное меню и строку состояния, поскольку в нашем приложении они не пригодятся.

Все элементы формы и их иерархия по умолчанию отображаются в правой части окна Qt Designer под названием Object Inspector. Вы с лёгкостью можете удалять объекты, кликая по ним правой кнопкой мыши в этом окне. Или же вы можете выбрать их в основной форме и нажать клавишу DEL на клавиатуре.

В итоге мы имеем почти пустую форму. Единственный оставшийся объект — centralwidget , но он нам понадобится, поэтому с ним мы ничего не будем делать.

Теперь перетащите куда-нибудь в основную форму List Widget (не List View) и Push Button из Widget Box.

Макеты

Вместо использования фиксированных позиций и размеров элементов в приложении лучше использовать макеты. Фиксированные позиции и размеры у вас будут выглядеть хорошо (пока вы не измените размер окна), но вы никогда не можете быть уверены, что всё будет точно так же на других машинах и/или операционных системах.

Макеты представляют собой контейнеры для виджетов, которые будут удерживать их на определённой позиции относительно других элементов. Поэтому при изменении размера окна размер виджетов тоже будет меняться.

Давайте создадим нашу первую форму без использования макетов. Перетащите список и кнопку в форме и измените их размер, чтобы вышло вот так:

Теперь в меню Qt Designer нажмите Form, затем выберите Preview и увидите что-то похожее на скриншот выше. Выглядит хорошо, не так ли? Но вот что случится, когда мы изменим размер окна:

Наши объекты остались на тех же местах и сохранили свои размеры, несмотря на то что размер основного окна изменился и кнопку почти не видно. Вот поэтому в большинстве случаев стоит использовать макеты. Конечно, бывают случаи, когда вам, например, нужна фиксированная или минимальная/максимальная ширина объекта. Но вообще при разработке приложения лучше использовать макеты.

Основное окно уже поддерживает макеты, поэтому нам ничего не нужно добавлять в нашу форму. Просто кликните правой кнопкой мыши по Main Window в Object Inspector и выберите Lay outLay out vertically. Также вы можете кликнуть правой кнопкой по пустой области в форме и выбрать те же опции:

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

Так как мы использовали вертикальное размещение, все элементы, которые мы добавим, будут располагаться вертикально. Можно комбинировать размещения для получения желаемого результата. Например, горизонтальное размещение двух кнопок в вертикальном будет выглядеть так:

Если у вас не получается переместить элемент в главном окне, вы можете сделать это в окне Object Inspector.

Последние штрихи

Теперь, благодаря вертикальному размещению, наши элементы выровнены правильно. Единственное, что осталось сделать (но не обязательно), — изменить имя элементов и их текст.

В простом приложении вроде этого с одним лишь списком и кнопкой изменение имён не обязательно, так как им в любом случае просто пользоваться. Тем не менее правильное именование элементов — то, к чему стоит привыкать с самого начала.

Свойства элементов можно изменить в разделе Property Editor.

Подсказка: вы можете менять размер, передвигать или добавлять часто используемые элементы в интерфейс Qt Designer для ускорения рабочего процесса. Вы можете добавлять скрытые/закрытые части интерфейса через пункт меню View.

Нажмите на кнопку, которую вы добавили в форму. Теперь в Property Editor вы должны видеть все свойства этого элемента. В данный момент нас интересуют objectName и text в разделе QAbstractButton . Вы можете сворачивать разделы в Property Editor нажатием по названию раздела.

Измените значение objectName на btnBrowse и text на Выберите папку.

Должно получиться так:

Именем объекта списка является listWidget , что вполне подходит в данном случае.

Сохраните дизайн как design.ui в папке проекта.

Превращаем дизайн в код

Конечно, можно использовать .ui -файлы напрямую из Python-кода, однако есть и другой путь, который может показаться легче. Можно конвертировать код .ui -файла в Python-файл, который мы потом сможем импортировать и использовать. Для этого мы используем команду pyuic5 из терминала/командной строки.

Чтобы конвертировать .ui -файл в Python-файл с названием design.py , используйте следующую команду:

Пишем код

Теперь у нас есть файл design.py с нужной частью дизайна нашего приложения и мы начинать работу над созданием его логики.

Создайте файл main.py в папке, где находится design.py .

Используем дизайн

Для Python GUI приложения понадобятся следующие модули:

Также нам нужен код дизайна, который мы создали ранее, поэтому его мы тоже импортируем:

Так как файл с дизайном будет полностью перезаписываться каждый раз при изменении дизайна, мы не будем изменять его. Вместо этого мы создадим новый класс ExampleApp , который объединим с кодом дизайна для использования всех его функций:

В этом классе мы будем взаимодействовать с элементами интерфейса, добавлять соединения и всё остальное, что нам потребуется. Но для начала нам нужно инициализировать класс при запуске кода. С этим мы разберёмся в функции main() :

И чтобы выполнить эту функцию, мы воспользуемся привычной конструкцией:

В итоге main.py выглядит таким образом:

Если запустить этот код: $ python3 main.py , то наше приложение запустится!

Но нажатие на кнопку ничего не даёт, поэтому нам придётся с этим разобраться.

Добавляем функциональность в наше Python GUI приложение

Примечание Весь дальнейший код пишется внутри класса ExampleApp .

Начнём с кнопки Выберите папку. Привязать к функции событие вроде нажатия на кнопку можно следующим образом:

Добавьте эту строку в метод __init__ класса ExampleApp , чтобы выполнить привязку при запуске приложения. А теперь взглянем на неё поближе:

  • self.btnBrowse : здесь btnBrowse — имя объекта, который мы определили в Qt Designer. self говорит само за себя и означает принадлежность к текущему классу;
  • clicked — событие, которое мы хотим привязать. У разных элементов разные события, например, у виджетов списка есть itemSelectionChanged и т.д.;
  • connect() — метод, который привязывает событие к вызову переданной функции;
  • self.browse_folder — просто функция (метод), которую мы описали в классе ExampleApp .

Для открытия диалога выбора папки мы можем использовать встроенный метод QtWidgets.QFileDialog.getExistingDirectory :

Если пользователь выберет директорию, переменной directory присвоится абсолютный путь к выбранной директории, в противном случае она будет равна None . Чтобы не выполнять код дальше, если пользователь закроет диалог, мы используем команду if directory: .

Для отображения содержимого директории нам нужно импортировать os :

И получить список содержимого следующим образом:

Для добавления элементов в listWidget мы используем метод addItem() , а для удаления всех элементов у нас есть self.listWidget.clear() .

В итоге функция browse_folder должна выглядеть так:

Теперь, если запустить приложение, нажать на кнопку и выбрать директорию, мы увидим:

Так выглядит весь код нашего Python GUI приложения:

Это были основы использования Qt Designer и PyQt для разработки Python GUI приложения. Теперь вы можете спокойно изменять дизайн приложения и использовать команду pyuic5 без страха потерять написанный код.

Есть ли GUI IDE для программирования python, так же как java имеет netbeans?

Мне нужен тот, где мы могли бы перетащить & amp; выпадающие тестовые ящики & amp; наклейки так же, как мы делаем в компонентах swing с использованием netbeans или eclipse.

Или есть ли надстройка, присутствующая как в netbeans, так и в eclipse?

74 ответа

никто не упомянул инструмент, который довольно много используется на других языках и может быть известен при запуске пользователя. Eclipse имеет перспективу для python под названием PyDev.

Проверьте PyForms, он основан на PyQt. Его можно использовать с Qt Designer, но также легко создавать графические интерфейсы непосредственно в скрипте Python.

Лучшая среда разработки Python – это PyCharm. Но это не бесплатно, и у него нет дизайнера GUI. http://www.jetbrains.com/pycharm/index.html

Qt-Designer

  • Qt5 также доступен.
  • qt4-designer
  • qt3- Дизайнер

PyQt поставляется с Qt ‘s Designer , который является довольно опрятным графический редактор графического интерфейса, если вы хотите написать свое приложение с картой Qt.

[/g7]

Qt Creator

Новая IDE Qt имеет полнофункциональная поддержка как для создания виджетов (как для дизайнера выше), так и для приложений QtQuick, которые лучше подходят для приложений с легким весом, с сенсорным экраном (например, планшетов / мобильных приложений)

SharpDevelop предназначен для разработки приложения на основе .Net Framework. Он поддерживает IronPython и имеет графический пользовательский интерфейс для WinForm, Silverlight, WPF Application. В то время как Visual Studio также имеет различный GUI-дизайнер для IronPython, однако он не имеет графического интерфейса для WinForm.

wxFormBuilder

Это также зависит от того, какой набор инструментов виджета вы хотите использовать. Я предпочитаю wxWidgets с python, wxPython .

Так что я предпочитаю создавать GUI, это wxFormBuilder , он доступен для доступа следуя PPA:

Он имеет приятное простое перетаскивание виджетов на холст, и вы можете быстро переключиться на вкладку кода, чтобы увидеть, что она сгенерировала, и мой незакрытый глаз чист и незагрязнен. Поскольку название на олове говорит о том, что это построитель форм, это то, чем он специализируется. Поэтому не ожидайте разработки с ним полного проекта, однако, если вы хотите, чтобы дизайн формы был отделен от кода анализа, он выполняет работа хорошо.

Вы после полной IDE (т. е. редактор кода, среда выполнения, инструменты компоновки пользовательского интерфейса) или просто утилита для создания пользовательского интерфейса?

Если это полная среда программирования, взгляните на Quickly toolet .

Если вы просто хотите создать интерфейсы, вы можете использовать конструктор «glade» для компоновки вашего интерфейса с помощью виджета GTK, затем загрузите это определение пользовательского интерфейса в любую программу python. Есть GTK + и Glade3 GUI Programming Tutorial (с примерами Python и C).

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

Camelot предоставляет компоненты для построения бизнес-приложений поверх Python, SQLAlchemy и Qt. Он вдохновлен интерфейсом администратора Django. Вы можете использовать Camelot для разработки простых и сложных бизнес-приложений со скоростью warp.

Рамка была представлена ​​несколько раз на международных встречах python. Его преимущества заключаются в

Преимущества для разработчиков

  • В дополнение к высокому качеству и проверенной технологии
  • Представления привязаны к модели данных без написания кода
  • Настраивается с помощью структуры действий
  • Документировано из учебника по вступлению в печать для печати
  • Warpspeed для развертываемого решения

Преимущества для пользователя

  • Отзывчивый и знакомый GUI
  • Редакторы и элементы управления высокого качества
  • Тонны встроенных функций, таких как импорт, экспорт, печать, резервное копирование и восстановление
  • Подключено к бизнес-процессам

Проверьте http://www.python-camelot.com/ для получения дополнительной информации, презентаций, youtube videos и многое другое.

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

никто не упомянул инструмент, который довольно много используется на других языках и может быть известен при запуске пользователя. Eclipse имеет перспективу для python под названием PyDev.

Проверьте PyForms, он основан на PyQt. Его можно использовать с Qt Designer, но также легко создавать графические интерфейсы непосредственно в скрипте Python.

Лучшая среда разработки Python – это PyCharm. Но это не бесплатно, и у него нет дизайнера GUI. http://www.jetbrains.com/pycharm/index.html

Eric IDE

Попробуйте использовать Eric IDE. Я думаю, что это лучшая IDE как для Python, так и для Qt4.

[/g3]

Если вам нужен дизайнер wysiwyg GUI, Glade – ваш лучший выбор:

  • first , установите glade из программного центра
  • , создайте свой графический интерфейс, сохраните его как, скажем, myapp.glade
  • Перейдите к сигналам и настройте свой обратный вызов, например on_window1_destroy
  • . В вашей программе python скажите GTK загрузить определения пользовательского интерфейса

После чтобы все было настроено, вы можете погрузиться прямо в учебник Glade (как отметил Джереми Керр в своем ответе). Начните с изучения различных опций и сигналов.

Когда вы чувствуете себя комфортно с glade, вы можете начать использовать его с помощью Quickly, который представляет собой набор программ, облегчающих простые задачи разработки программного обеспечения. Он заботится о переводах, хранении конфигурации, упаковке, интеграции в пусковую панель, включая PPA, и многое другое:

Быстро теперь создает огромный проект со всем, что вам нужно, уже настроенным. Gui, файлы перевода, конфигурация через desktopcouch и т. Д.

Вы увидите, что быстро настраивается несколько окон (основное приложение, конфигурация и диалог ) для тебя. Чтобы начать редактирование GUI:

  • запустите quickly design
  • Чтобы перейти к коду приложения, запустите quickly edit
  • Перейти к файлу HelloWorldWindow.py
  • Теперь начните добавлять обработчики и логику сигналов.

Наконец, для запуска вашего приложения введите quickly run .

На этом этапе вы можете ознакомиться с документацией PyGTK, чтобы узнать о сигналах, их подписях обработчиков, различных виджетах и ​​т. д.

  • [/g18] Справочное руководство PyGTK 2.0
  • [/g19] Справочное руководство PyGObject
  • Быстро Виджеты (не обязательно)

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

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