Является ли Python хорошим выбором для разработки пользовательского интерфейса? Если так, то wxPython или Tkinter?

12

Я с нетерпением жду разработки настольного приложения с использованием Python. Я новичок, и у меня нет достаточного опыта в Python. Я также программист на Java. Хотя у меня есть некоторый опыт создания пользовательских интерфейсов с использованием Swing, я вижу, что приложения, разработанные на Swing, слишком медленные. Что ж, это может быть одной из причин, почему многие основные реализации выполняются на C / C ++, как в браузерах / играх.

Разработка пользовательского интерфейса в C ++ может быть лучшим вариантом, но я предпочитаю выбирать язык программирования высокого уровня по сравнению с C / C ++. Поэтому я выбрал Python, предполагая, что он будет хорошо работать на Java Swing, поскольку сам Python изначально построен на C / C ++.

Итак, могу ли я пойти дальше с этим предположением, что Python лучше, чем Java Swing, для разработки пользовательского интерфейса? Или вы предлагаете язык, который лучше, чем Python, для разработки пользовательского интерфейса? Если я вообще использую Python, какой инструментарий мне следует использовать Tkinter или wxPython и почему?

Вамси Эмани
источник
4
Ваши предположения кажутся ошибочными. Python построен на C / C ++, но также и JVM (скорее всего).
user281377
Зачем ограничиваться Tkinter и wxPython?
Анто
2
Я не пытаюсь себя ограничивать. У меня сложилось впечатление, что это были два хорошо известных инструментария для разработки GUI.
Вамси Эмани
IDE Lazarus, компилятор Free Pascal и Object Pascal обеспечивают очень быстрый и простой способ разработки графических интерфейсов.
Системович

Ответы:

15

Я только начал разработку приложения для Windows, используя Python. Я использую PyQt .

Это очень легко установить и запустить. Учебник здесь: http://zetcode.com/tutorials/pyqt4/firstprograms/ показывает, как легко я покажу код:

#!/usr/bin/python

# simple.py

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle('simple')
widget.show()

sys.exit(app.exec_())

Это дает вам окно вверх.

Я выбрал Python / PyQt вместо C # / WPF, потому что я хочу изучать Python, и мой работодатель дает мне время.

Мой менеджер порекомендовал мне PyQt поверх других фреймворков, так как по его опыту его проще использовать.

Мэтт Эллен
источник
2
Там также PySide ( pyside.org ), см stackoverflow.com/questions/1297660/pyside-vs-pyqt
codeape
Я использовал PySide раньше, и он работает довольно хорошо. Однако будущее развитие PySide находится в подвешенном состоянии, потому что Nokia продала Qt.
Джоккинг
5

Если вы хотите разработать собственный графический интерфейс для Windows или OSX, я бы посоветовал использовать Tkinter (т. Е. Библиотеку GUI Tk с питонической одеждой), поскольку это делает вас намного ближе к нативному внешнему виду, чем wxPython (wxWidgets для python) , Я не нахожу это легким для количественной оценки, но на мой взгляд скриншоты Windows и OSX . YMMV. Я знаю, что Tk ( важно: с набором виджетов Ttk) очень сильно выглядит нативно.

Если вы разрабатываете для Linux ... Я не могу честно посоветовать одно из другого, так как я потерял представление о том, как выглядит текущая предпочтительная платформа. :-)

Donal Fellows
источник
1
Обратите внимание, что Tkinter не предоставляет много часто используемых виджетов из коробки. Например, если вам нужен индикатор выполнения, вам придется либо написать один самостоятельно, либо найти тот, который написал кто-то другой.
Джеймс
1
Подождите, но wxWidgets использует нативные элементы графического интерфейса. По крайней мере, привязки C ++ делают. Я не очень уверен насчет Python.
Чжэхао Мао
@ZhehaoMao wxWidgets представляет собой смесь нативных и нативных элементов. Некоторые элементы похожи на нативные, но на самом деле созданы для более унифицированного API.
Юбер Гжесковяк,
3

Я бы сказал, что это хороший выбор, если вы уже знаете и любите Python. В противном случае используйте язык, который вы уже знаете, это Java. Единственное исключение здесь, если это учебный проект, и в этом случае я бы посоветовал получить опыт работы с другими языками.

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

jhocking
источник
1

Единственный реальный совет, который можно дать для всех подобных вопросов, это «попробуй и посмотри, понравится ли тебе это» - мнения других людей о языках программирования (особенно о том, что может быть их самым любимым или самым ненавистным языком) редко стоят много ,

Тем не менее, мои 5 центов стоят - для быстрого, простого графического интерфейса Windows, комбинация Python и wxWidgets работает очень хорошо. Но, как я уже сказал, попробуйте сами - вы можете собрать что-то простое, но полезное за час или около того, даже без большого опыта работы с Python (у меня, конечно, не так много).

Нил Баттерворт
источник
1

В случае, если кто-то попадет сюда через поисковик: вы можете быстро сгенерировать несколько примеров Tkinter, используя генератор PAGE. Он генерирует некоторый приличный код, который даст вам представление о том, что потребуется, чтобы достичь того, чего вы хотите достичь. Это определенно требует, чтобы вы согласились с общностью, как заявляет автор, но для кого-то, кто хочет испытать воды или получить общее представление о том, куда они идут, это хороший инструмент. СТРАНИЦА на SourceForge .

OddlySpecific
источник
-1

Я думаю, что некоторые типы приложений достаточно легко писать на Python.

Например, Task Coach написан на языке Python / wxPython. Они используют компилятор Python2exe, такой как py2app, py2exe и т. Д., Для создания кроссплатформенных, нативно выглядящих исполняемых файлов.

LennyProgrammers
источник
-1

Если вы ограничены разработкой в ​​экосистеме Windows и используете Visual Studio, подумайте о Iron Python. Железный Питон - это Python плюс .NET объекты.

mkClark
источник