Подтвердить что ты не робот

Вопросы re: текущее состояние программирования GUI с помощью Python

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

Но wxPython - это огромный шаг назад от чего-то вроде Delphi VCL или .NET WinForms. В то время как сам Python предлагает хороший прирост производительности от общего программирования более высокого уровня абстракции, wxPython используется на более низком уровне абстракции, чем VCL. Например, я потратил много времени, пытаясь заставить объект списка wxPython вести себя так, как я этого хотел. Просто для добавления сортируемых столбцов были задействованы несколько сценариев с интенсивным использованием кода, один для создания и поддержки структуры теневых данных, обеспечивающей фактический порядок сортировки, другой, чтобы можно было показать треугольники направления сортировки в заголовке столбца и еще пару я не помню. Все эти шаги, связанные с ошибками, могут быть выполнены просто путем установки значения свойства с использованием моего компонента grid. Delphi.

Мой вывод: хотя Python обеспечивает большую производительность, повышая уровень абстракции для большого количества кодирования общего назначения, wxPython представляет собой несколько уровней абстракции ниже, чем инструменты gui, доступные для Delphi. Чистый результат: GUI-программирование с Delphi намного быстрее, чем программирование gui с Python, а полученный ui с Delphi еще более отполирован и полнофункциональный. Мне не кажется, что это преувеличивает, говоря, что программирование в Delphi gui было более продвинутым еще в 1995 году, чем программирование python gui с помощью wxPython в 2009 году.

Я изучал другие фреймворки python gui, и это выглядело не так, как будто они были значительно лучше, чем wxPython. Я также провел некоторое минимальное исследование gui formbuilders для wxPython, что сделало бы вещи немного лучше. Но по большинству отчетов эти решения ошибочны, и даже отличный разработчик форм не будет рассматривать мои основные жалобы на wxPython, которые просто состоят в том, что у него меньше функций и обычно требуется, чтобы вы выполняли GUI-программирование на гораздо более низком уровне абстракции, чем я используется с Delphi VCL. Некоторое быстрое исследование предложенных решений python gui-dev (http://wiki.python.org/moin/GuiProgramming), по-видимому, несколько удручает для тех, кто используется в Delphi или .NET.

Наконец, у меня есть несколько вопросов.

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

Во-вторых, может ли IronPython быть направлением? В основном я старался не употреблять .NET koolaid, но, возможно, IronPython дает мне повод для окончательного сдачи. Даже тогда IronPython полностью интегрируется с WinForms, или мне нужно, чтобы сами формы поддерживались С# или vb.сеть? Мне кажется, что это определенно имеет место с SharpDevelop и MonoDevelop (то есть, IronPython не может использоваться для создания GUI времени разработки). VS.NET полностью интегрирует IronPython с gui-building?

Мне кажется, что Python может "захватить мир" таким же образом, как и в Visual Basic в начале 1990-х годов, если для Python появилось замечательное новое решение для создания gui-building. Только на этот раз с Python у нас была бы новая парадигма быстрой, кросс-платформенной и open-gui-программирования. Разве корпорации не съедят это? Да, я знаю, веб-приложения в наши дни являются основным направлением, поэтому отличное решение Python-gui не создало бы такой же революции, что и VB. Но я не вижу, как исчезает GUI-программирование, и мне бы понравилось хорошее современное решение с открытым исходным кодом на высоком уровне.

4b9b3361

Ответ 1

Кажется, ваши жалобы касаются wxPython, а не самого Python. попробуйте pyQt (или это qtPython?)

но как wxPython, так и pyQt - это просто привязки Python к библиотеке C/С++ (соответственно), это как (концептуально) низкий уровень как оригиналы.

но Qt намного превосходит wx

Ответ 2

PyQt является привязкой к Qt SDK от Nokia, а сам PyQt поставляется компанией под названием RiverBank.

Если для вас не важна лицензия, вы можете использовать PyQt под GPL или заплатить за коммерческую лицензию.

PyQt теперь привязывает Qt 4.4.

Qt - это не только GUI, но и полный C/С++ SDK, который помогает с сетью, xml, media, db и другими материалами, а PyQt передает все это на python.

С помощью PyQt вы будете использовать Qt Designer, и вы передадите файл .ui в файл .py простой командной строкой.

Вы найдете много ресурсов в Интернете о PyQt и хорошую поддержку от разных сообществ и даже опубликовали книги на PyQt.

Многие предложения считают, что у RiverBank нет выбора, кроме как выпустить следующую версию, которая будет зависеть от Qt 4.5 под LGPL, мы ждем:).

Другим решением является Jython с Java Swing, очень простой и элегантный для написания (особенно под JDK 6), но недостаточно ресурсов в Интернете.

Ответ 3

Вы можете посмотреть на Jython (Python на виртуальной машине Java). Он очень похож на Iron Python, и вы можете идти .Net koolaid.

Ответ 4

dabo ставит программирование wxPython на более высокий уровень, как то, что вы ищете.

Ответ 5

Вероятно, вам придется использовать питоны .net или java, но сначала проверьте это и посмотрите, соответствуют ли они вашим требованиям:

Kiwi

Ответ 6

Короткий ответ: не пытайтесь Tkinter - он получил все проблемы, описанные выше.

Длинный ответ: Tkinter не полезен для больших программ. Обращение с различными частями с ним как-то неизменно вырождается в жонглирование (что никогда не происходит иначе), и полученный результат не выглядит родным или особенно полированным.

Ответ 7

Вы правы, wxPython может быть определенно улучшен. Но я думаю, что Робин Данн проделал большую работу до сих пор и до сих пор.

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

Ответ 8

Мы очень довольны использованием Python.Net для создания наших пользовательских интерфейсов в WinForms и использования CPython для презентатора, модели. IronPython также является хорошим инструментом, если вы хотите сделать python в Windows.

Ответ 9

Существует Wax, целью которого было создание более pythonic-интерфейса для wxWidgets, но похоже, что его разработка застопорилась.