Есть ли одна стандартная структура для разработки приложений Python GUI?

20

Существует так много фреймворков для написания приложений с графическим интерфейсом на Python. Но есть ли одна ключевая стандартная структура? Например, у нас есть пакет .NET / C # в Visual Studio.

Я думаю и в других ракурсах. В будущем, если я дам интервью для работы программиста на Python, какой графический интерфейс будет рассматриваться?

Мне также интересно, что не существует IDE, которая объединяет GUI и язык Python. Выбор аромата хорош, но чрезмерный выбор отвлекает.

RPK
источник
Там нет "стандарт". .NET не стандартизирован. Там нет органа стандартизации, который написал стандарт для .NET Существует стандарт для C #: ecma-international.org/publications/standards/Ecma-334.htm . Возможно, «стандарт» не то, что вы имеете в виду?
С.Лотт
@ S.Lott: Извините за этот запутанный термин. Я имел в виду что-то другое. Для приложений .NET Visual Studio - лучший инструмент all-i-one, который включает в себя конструктор графического интерфейса пользователя и многое другое. Редко люди высматривают альтернативы VS.NET. Я имел в виду в аналогичном термине. Любая Python IDE, где поиск полного комплексного решения заканчивается.
РПК
Вы спрашиваете об IDE (например, Visual Studio)? Если так, то «рамки» - это неправильное слово в вопросе. Пожалуйста, уточните, что вы просите.
S.Lott
@ S.Lott: Нет, я не спрашиваю о Visual Studio. Позвольте мне уточнить. Взять, к примеру, ASP.NET. Это фреймворк, но он очень хорошо интегрируется в Visual Studio IDE. У вас есть все инструменты, доступные на центральном столе. Есть ли что-то для Python?
RPK
Visual studio - это IDE == все инструменты для разработки в одном месте. «Я не спрашиваю о Visual Studio» - это полная противоположность «У вас есть все инструменты, доступные на центральном столе. Есть ли что-то для Python?». Либо вы спрашиваете об IDE (версия Visual Studio для Python), либо вы спрашиваете о самой платформе. Или, возможно, вы спрашиваете об обоих. Очень сложно понять, о чем идет речь. Пожалуйста, обновите вопрос, чтобы четко указать, что вы хотите.
S.Lott

Ответы:

12

Вы можете писать приложения Win32 API GUI на Python, если вам нравится писать весь этот шаблонный код: проект PyWin32

Лично мне нравится wxPython . Он кроссплатформенный (полностью поддерживается как в Linux, так и в Windows) и существует уже довольно давно ... приличная база поддержки и множество документации / примеров кода. Если вы хотите использовать это, взгляните на BoaConstructor . Это IDE для wxPython (или, лучше сказать, IDE, написанная для и для wxPython). Это единственная RAD IDE, специально предназначенная для Python, о которой я даже упомянул, за исключением редактора Qt UI (редактор UI Qt можно использовать как для C ++, так и для PyQT).

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

pyGTK, также уже упомянутый, был бы другим хорошим выбором. Он также кроссплатформенный, хотя я не имел никакого личного опыта разработки GTK для Windows. Python был бы лучшим выбором, IMO - я думаю, что графический интерфейс пользователя, созданный с библиотекой Qt, выглядит и функционирует лучше, чем у GTK. Я также считаю, что с механизмом обработки сигналов / слотов Qt проще работать. YMMV.

На самом деле не существует никакого стандарта для разработки Python GUI, по крайней мере, я не видел, но из моих коллег-разработчиков Python, с которыми я работал на протяжении многих лет, они предложили мне wxPython и PyQT больше, чем любой другой. инструментарии. Честно говоря, я не уверен, что существует какое-то значительное количество позиций разработки Python GUI. Большая часть разработки Python, которую я делал в течение многих лет, была на стороне сервера, но это не значит, что сейчас не существует различных предприятий, которые ищут пути с открытым исходным кодом для своих приложений с графическим интерфейсом.

Будет
источник
Приложения Tkinter могут выглядеть вполне приемлемыми, часто почти неотличимыми от нативных приложений, если вы просто потратите время на это. Я согласен, однако, что wxPython выглядит лучше без подстройки. Лично я все еще предпочитаю Tkinter, потому что он выглядит достаточно хорошо для большинства людей, и моя производительность выше, чем с wxPython.
Брайан Оукли
Tk (Tkinter) не поддерживает полный Unicode (например, формирование скриптов), если вы планируете разрабатывать приложение l10n / i18n.
user.dz
12

Tk раньше был стандартом, но он, возможно, упрощен и безобразен. Затем Qt стал довольно популярным. Gtk также возможен, и это охватывает фавориты на платформах Linux-ish.

Но вы правы, на самом деле нет простого ответа. В конце концов, чрезмерный выбор довольно распространен в мире открытого кода.

Питер Айзентраут
источник
4
Я бы выбрал Qt только потому, что он выглядит лучше, чем Gtk
TheLQ
1
+1 за всесторонний ответ. Qt хорош и мощен, и доступны две привязки (по лицензии).
ChristopheD
Это, возможно, больше не уродливо ИЩЕТ на Windows. Тем не менее, мне не нравится, как выглядит код, который вы должны написать. Код некрасивый. Внешний вид, чисто родной и вполне разумный, наконец-то.
Уоррен П
5

Не существует «стандарта», и я согласен - множество вариантов - это боль. Что касается интегрированной IDE «двухсторонние инструменты» для Python GUI, я также удивляюсь, почему, кажется, их там нет - возможно, потому, что существует так много наборов инструментов GUI, которые никто не хочет вкладывать в IDE только для одного из их.

При этом PyQt 4.7 с P3k предоставит вам замечательный графический интерфейс (а также множество других мощных функций). См. Http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - «Это справочное руководство для PyQt 4.8.4. PyQt v4 - это набор привязок Python для v4 Qt каркас приложения от Nokia. "

PyQt широко используется, и есть несколько хороших книг по нему: см. Среди прочего http://www.qtrac.eu/pyqtbook.html «Быстрое программирование с помощью Python и Qt GUI» (книга немного устарела - требует обновления для P3k).

Есть два серьезных вопроса с PyQt:

1) Он имеет некоторые явно «непитонные» характеристики, будучи просто тонкой оболочкой для библиотек C ++ Qt. Но я рекомендовал P3k-PyQt 4.7, потому что некоторые из них были рассмотрены в «последних и самых лучших» пакетах. Проверьте этот пост:

Проблемы с PyQt

2) За коммерческое использование взимаются довольно высокие лицензионные сборы, как для PyQt, так и для Qt.

Перспективной альтернативой PyQt является PySide от Nokia, еще одна оболочка Python для Qt, которая является полностью открытым исходным кодом (хотя и не включает лицензирование Qt).

Знание о Qt не является плохой вещью на рынке, и вы получите это от PyQt, поэтому я бы серьезно (или PySide) серьезно подумал, если вы пытаетесь выбрать одну платформу GUI, чтобы стать экспертом в ,

Независимо от того, что вы выберете, я бы рекомендовал избегать использования tkinter по большей части, даже несмотря на то, что он «из коробки» с Python, потому что он чрезвычайно ограничен, а IMO имеет грубый, устаревший внешний вид.

НТН

Вектор
источник
3

pyGTK плодовит. Он довольно прост в использовании и делает графический интерфейс не таким уж плохим.

dan_waterworth
источник
Насколько богато сообщество? Как быстро ответы приходят на его форум?
RPK
1
@RPK, я понятия не имею, мне никогда не приходилось обращаться за помощью, все довольно просто в использовании.
dan_waterworth
Я не уверен, что слово «плодовитое» - правильное слово. "производить потомство, молодняк, фрукты и т. д. в изобилии; очень плодотворно: плодовитое грушевое дерево" может быть "популярным" или "потрясающим".
S.Lott
@ S.Lott, плодовитый: «Точно так же дает результаты или работает в изобилии». (второе викисловарное определение). «Служить для производства; плодотворные результаты; активные; как плодовитый мозг; плодовитое противоречие зла». (Пересмотренный неограниченный словарь Вебстера (1913 + 1828))
dan_waterworth
плодовитый как в "pyGTK производит много приложений?" Кажется напряженным. Люди производят аппликации. Возможно, pyGTK - популярный фонд, но он не похож на продюсера.
S.Lott
0

Gtk3 является структурой GUI, которая является очень зрелой. Он имеет родные привязки Python (GObject Introspection) и множество документации . Если вы делаете совсем немного GUI, подумайте об использовании Anjuta . Anjuta имеет интерфейс перетаскивания, чтобы легко настроить виджеты.

WxWidgets довольно хорош, однако нет простого способа динамически генерировать обратные вызовы Python, как это делает Anjuta для Gtk.

PyGtk теперь не рекомендуется в пользу привязок Gtk3 к Python (GObject Introspection)

PyQt также является игроком в Python GUI, но у него нет большого сообщества.

BoaConstructor дольше поддерживается и будет глупо использовать.

theGtknerd
источник