«IronPython + .NET» против «Python + PyQt». Какой из них лучше для разработки приложений для Windows? - PullRequest
7 голосов
/ 17 апреля 2010

Я новичок в использовании Python. Я хотел бы разработать приложение Windows GUI с использованием Python. После некоторых исследований я обнаружил, что у меня есть 2 варианта: -

  1. IronPython + .NET Framework
  2. Python + PyQt

Могу ли я узнать, какой из них лучше подходит для разработки приложений для Windows? Какая опция имеет больше функций (например, поддержка баз данных и т. Д.)?

Кроме поддержки .NET, есть ли большая разница между IronPython и Python? Какой из них лучше для меня?

Спасибо.

Patrick.L

Ответы [ 5 ]

5 голосов
/ 19 апреля 2010

Я столкнулся с той же проблемой и, с опасением, решил пойти с IronPython / C # /. Net. Мне понравился Qt, но я был в затруднении, когда он был продан Nokia, потому что я просто не был уверен, что цели Nokia по владению Qt соответствуют моим потребностям в оконном интерфейсе. Тем не менее, Nokia сделала несколько позитивных шагов, объединив отдельные лицензии на платформу в одну лицензию и отказавшись от лицензии GPL в пользу LGPL.

Технически, Qt хорошо спроектирован, но сильно зависит от сложных для отладки макросов C #. Я не уверен почему. Самое лучшее в Qt - это то, что он с открытым исходным кодом. Если вам нужно, вы можете это исправить. У меня нет прямого опыта работы с PyQt, но он существует уже довольно давно.

.Net - это .Net и, как обычно, с Microsoft, движущаяся цель. Вы жертвуете скоростью ради простоты кодирования. Группа IronPython, кажется, хороша, но я не уверен, есть ли у Microsoft обязательства. Поддержка Visual Studio пока отсутствует, хотя планы звучат хорошо. В конце концов, MS действительно заботится, владеют ли они всем, что не относится к Python. Что я действительно ожидаю, так это то, что MS создаст динамическую версию C #, интерпретатор и все, и скажет всем программистам Python, что она лучше, поддерживается и хорошо интегрируется с .Net. Затем они преодолеют свой значительный вес за сокрушением Python, как они сделали с Java.

Удачи. Это важное решение.

4 голосов
/ 15 июня 2010

В моей игре с PyQt (как интерфейс с Qt) и IronPython (как интерфейс с WinForms) пакет смешан.

Оба являются в основном «привязками» для базовых платформ. PyQt практически "автоматически генерируется" из API Qt и немного более "зрел" как оболочка из-за значительного использования в Linux.

IronPython идет немного глубже и, кажется, «перезаписывает» системные объекты с небольшими незаполненными пробелами между библиотеками cPython и .Net (gzip, zip, subprocess и т. Д.).

В обоих случаях вам нужно заглянуть через Python в инструментарий и сказать себе, нравится ли вам инструментарий. Все, что делает Python - это переупаковка API инструментария для объектов. Опять же, забудьте о аспектах Python. Посмотрите на базовый API инструментария и подумайте, сможете ли вы с этим жить.

Лично я нахожу природу C ++ API Qt слишком непитонным, чтобы быть довольным этим. C # и Python настолько похожи, что если вы удалите curlies и объявление типа из C #, вы не узнаете, является ли это C # или Python. В результате, для программиста на Python .Net API на основе C #, код и примеры, представленные в MSDN и других местах, мгновенно применяются с очень незначительными изменениями.

В конце концов, более правильное сравнение будет между PyQt (привязки Qt для cPython) и Win32py (привязки Windows ABI для cPython). IronPython - это почти новое изобретение одного и того же языка на другой платформе, со всеми вытекающими отсюда проблемами (без функциональности).

3 голосов
/ 17 апреля 2010

PyQt - отличная библиотека, но .NET - лучший путь для Windows. Это потому, что вы можете использовать любые элементы управления GUI, которые C # сможет использовать в Python. Кроме того, в дополнение к WinForms IronPython можно использовать для создания приложений WPF, которые выглядят хорошо.

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

3 голосов
/ 17 апреля 2010

Во-первых, есть намного больше, чем 2 варианта (в python больше библиотек с графическим интерфейсом, чем вы можете потрясти), но давайте на минутку остановимся. «Лучше», будучи субъективным, напрашивается вопрос: «Чему ты хочешь научиться?»

Если целью является разработка приложений с графическим интерфейсом Windows, то я бы остановился на .Net. .Net пользуется большим уважением, есть много работы для программистов .Net, и она ориентирована на Windows (да, я знаю, что есть Mono, но все же) означает, что вы не пытаетесь думать о деталях трех + наборов ожиданий пользователя.

Если целью является изучение широко используемых библиотек и методов Python, я бы пошел с PyQt (и недавно сделал). Он кроссплатформенный, уважаемый и имеет большое сообщество. Но вы теряете шанс изучить платформу .Net в рамках этого проекта.

Я не думаю, что вы можете проиграть в любом случае, если ваша цель - учиться. Если ваша цель заключается в том, чтобы что-то сделать, подумайте о долгосрочных планах проекта и о том, где он будет реализовываться в долгосрочной перспективе. Вы хотите что-то, что хорошо интегрировано в пользовательский интерфейс Windows и использует стандартные виджеты? Вы хотите что-то, что может быть легко адаптировано к другим платформам в будущем?

1 голос
/ 17 апреля 2010

Я не использовал IronPython с .NET, но у меня есть написано много кода PyQt. По моему опыту, PyQt - отличная библиотека. Это очень хорошо выполненные привязки к Qt, которая является очень хорошо известной и широко используемой библиотекой.

Поскольку вы пишете стандартный Python, вы можете пользоваться всей стандартной библиотекой Python, которая дает вам массу возможностей, в дополнение к нескольким полезным модулям Qt, импортированным с PyQt. Написание PyQt-кода продуктивно, а графические интерфейсы получаются красивыми и отзывчивыми. И вы не можете игнорировать преимущества переносимости: просто с небольшими изменениями, если таковые имеются, вы можете просто запустить эти программы в Linux, и они будут просто работать .

...