“IronPython +.NET” по сравнению с “Python + PyQt”. Какой лучше для разработки Приложения Windows?

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

  1. IronPython + платформа.NET
  2. Python + PyQt

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

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

Спасибо.

Patrick. L

7
задан Patrick.L 17 April 2010 в 02:52
поделиться

5 ответов

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

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

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

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

5
ответ дан 6 December 2019 в 12:47
поделиться

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

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

3
ответ дан 6 December 2019 в 12:47
поделиться

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

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

1
ответ дан 6 December 2019 в 12:47
поделиться

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

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

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

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

3
ответ дан 6 December 2019 в 12:47
поделиться

По моему мнению, как с PyQt (в качестве интерфейса для Qt), так и с IronPython (в качестве интерфейса для WinForms) пакет смешанный.

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

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

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

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

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

4
ответ дан 6 December 2019 в 12:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: