Как стать автором
Обновить

Комментарии 25

Попытка написать MS Access или LO Base?
Откройте для себя qt designer.
Здесь тот самый случай, когда формочку в дизайнере рисовать дольше, чем написать ее в коде.
Объясните пожалуйста, зачем к Qt еще и Python прикручивать? Неужели для таких задач самого Qt мало? И вообще зачем Python если есть Qt?
В этом и есть главная фишка.

Да, Qt достаточно. И на нем вы сможете написать все тоже самое, и даже больше и лучше.
Но для чистого Qt нужен компилятор C++, желательно приличная среда (Qt Сreator очень хорош) и много времени на ожидание компиляции и отладку.

Но зачем ждать, если Python запускается сразу, как язык он гораздо лаконичней C++, а через PyQt можно пользоваться всей мощью Qt. И что самое вкусное — практически без потери производительности.

Позвольте не согласиться с вашими тезисами.


Но для чистого Qt нужен компилятор C++

Как будто это какая-то редкость. Для PyQt нужен интерпретатор Python со своей стандартной библиотекой, сам PyQt и, вдобавок, прекомпилированные бинарники Qt. Установить всё это может быть не так уж просто, особенно если в системе нет нормального пакетного менеджера. А если вы вдруг захотите самостоятельно пересобрать PyQt из исходников, вам точно понадобится и компилятор C++.


желательно приличная среда (Qt Сreator очень хорош)

Для питона тоже неплохо бы иметь хорошую среду с диагностиками и зачатками статического анализа (PyCharm?). Более того, как мне кажется, динамически типизированные языки предъявляют намного большие требования к качеству IDE: без них последствия банальной опечатки вы увидите уже после запуска программы.


и много времени на ожидание компиляции и отладку.

В Qt практически не используется высокооктановая шаблонная магия, зато широко применяется идиома PIMPL — это здорово ускоряет компиляцию. Времени на компиляцию столь простого приложения, как описывается в статье, потребуется немного.


Но зачем ждать, если Python запускается сразу, как язык он гораздо лаконичней C++

Для того, чтобы убрать два лишних звена (Python и PyQt) из технологического стека, получив в результате более отзывчивое приложение, потенциально более кроссплатформенное, с более простым процессом развёртывания и пакетирования.


а через PyQt можно пользоваться всей мощью Qt.

Через Qt можно делать то же самое. Как фреймворк Qt очень удобен: если приложение написано целиком на Qt, необходимости думать о низкоуровневых деталях практически не появляется.


И что самое вкусное — практически без потери производительности.

Ваше приложение пока что слишком простое, чтобы заметить разницу.

Ну в Линуксе все ваше будет прекрасно работать, а для винды надо mingw ставить или того хуже MS Visual Studio.
Я настройку этого окружения так и не освоил. Неделю пролюбился с ним и бросил. Да и Python я знаю гораздо лучше С++.

Про более кросс-платформенное, его все-таки под разные платформы необходимо собирать. А с PyQt это может быть проще.
[...] его все-таки под разные платформы необходимо собирать, а с PyQt это может быть проще.

Так-то оно так, но перед тем как станет проще нужно, чтобы кто-нибудь добрый собрал под эти платформы PyQt.


Проблемы с пакетированием мне видятся вот в чём: представьте, что вы захотели сделать самодостаточное приложение. Чтобы конечному пользователю под виндами не мучиться со всеми этими зависимостями, придётся тащить с собой питон, все питоньи библиотеки и все необходимые для них бинарные либы, да ещё и настроить при запуске интерпретатор так, чтобы он эти либы находил. Весить будет мегабайт под сотню.

Можно забандлить с помощью cxFreeze. Да будет занимать сотню другую мегабайт, ну и что?

Дискового пространства, внезапно, жалко — если под диском понимать SSD, то оказывается, что оно достаточно дорогое и хотелось бы потратить его с большей пользой, чем держать очередную копию стандартной питоновской библиотеки вместе с pyc-файлами. К тому же, эти дубликаты засоряют дисковый кэш системы. По идее, нивелировать обе эти проблемы может ФС с поддержкой активной дедупликации, но покажите мне такую для винды? (В десктопных не-виндах ситуация не лучше.)

Для PyQt нужен интерпретатор Python со своей стандартной библиотекой, сам PyQt и, вдобавок, прекомпилированные бинарники Qt. Установить всё это может быть не так уж просто, особенно если в системе нет нормального пакетного менеджера.

А вы попробуйте, узнаете, что это очень просто на большинстве систем. Для Windows инсталлятор Python качается с офф.сайта. В Linux он предустановлен, во FreeBCD ставится пакетом.
Чтобы поставить "сам PyQt и, вдобавок, прекомпилированные бинарники Qt", нужно лишь набрать команду, приведенную в статье
pip3 install pyqt5

Ваше приложение пока что слишком простое, чтобы заметить разницу.

Оно и должно оставаться простым. Зачем мне делать сложное, если достаточно простого?

Чтобы поставить "сам PyQt и, вдобавок, прекомпилированные бинарники Qt", нужно лишь набрать команду, приведенную в статье

Это если интернет есть...

Самого Qt? Вы спрашиваете почему писать на Python удобнее чем на C++? Или какой смысл вы вкладываете в "самого Qt"?

Вы спрашиваете почему писать на Python удобнее чем на C++?

Как по мне, ваше (неявное) предположение о большем удобство Python по сравнению со связкой C++11 + Qt5 требует детального обоснования. Особенно в задачах разработки десктопных программ с нетривиальным пользовательским интерфейсом.

пожлуйста, хоть я и не пишу софт для пк но только из моей практики:
1) отсутствие менеджера пакетов нужен был soap клиент колеги с бубном, мануалами и матюками кое как поставили за пару дней какую то библиотеку для soap в с++, но работала она отвратно (да, неопытность имеет место быть но о каком опыте идет речь когда нужен простой soap клиент?) я за пару минут поставил пает через pip и смотря на рабочий код сокрушался что на c# работа с soap приятнее, но все завелось за пару минут
2) Инструментарий очень холиварный вопрос но мне не нравится QTCreator, по сравнению с продуктами Jetbrains имхо сильно сыроват, в то время как Pyacharm очень хорошо понимает pyqt и дружит с qt designer, знаю есть clion, но когда мне нужен qt с clion он еще не дружил

3) Сложность я не хочу искать утечку памяти, ждать пока приложение скомпилируется и тд, когда речь идет о прикладном по это излишне.
1) Всяких библиотек в С++ туча. Даже на одно и тоже можно найти разные библиотеки.
2) Eclipce вроде ещё поддерживает С++\Qt. И Visual Studio. Надо было попробовать.
3) Утечки памяти сейчас ищут только упёртые С-ишники. Есть куча smart pointer-ов которые позволяют избежать этого. Компиляция маленьких программ занимает секунду. И на этом этапе вам расскажут об ошибках во всей программе, а не только куда вы явно зайдёте.
для установки библиотеки на python мне нужна одна команда в консоли, с++ этим похвастаться не может
eclipse и visual studio не далеко ушли от qt creator — работал с обоими
не спорю утечки сегодня не самая большая проблема, но одну и ту же прикладную задачу на питоне как правило писать значительно быстрее
Объясните пожалуйста, зачем к Qt еще и Python прикручивать? Неужели для таких задач самого Qt мало? И вообще зачем Python если есть Qt?

Пожалуй, отвечу и я, хотя статья 2017 года.

1.
Кто-то знает Python, но не знает C++.

2.
Я программирую и на C++, и на Python. Оба языка мне нравятся, C++ очень давно, а Python я осваиваю относительно недавно. И как раз сейчас делаю новую версию проекта, который был написан на С++, правда, не на Qt, а на Builder. Переписываю с нуля.
Есть возможность сравнить.
Так вот… разработка на Python происходит значительно быстрее. Может быть, даже в разы. Очень хорошо ощутил, почему этот язык используют для прототипирования. После C++ ощущение, что в руках детский конструктор… Чуть поиграл — и раз, все готово, все работает :)
Да, на С++ совершенно другие возможности. Но если хватает возможностей Питона — почему бы нет?
А если мне не хватит в каких-то участках быстродействия — я перепишу их на C++. Думаю, это будет максимум несколько процентов кода.
Так что вот — почему-бы не использовать лучшие стороны обеих языков?

Спасибо автору за статью, нашел ответы на несколько вопросов! :)
«Мне нужен был инструмент. Острый, практичный, универсальный. Отвечающий всем моим требованиям и расширяемый по моему желанию.»

Такой инструмент — Posh (Powershell).
И в тоже время простой и удобный.

Powershell + WPF?
По-моему очень странный выбор средства автоматизации Windows.
WPF был бы хорошим выбором при сочетании условий:
— если бы я его знал, хотя бы настолько же, насколько знаю Qt
— если бы студия была моим рабочим инструментом
— если Win была бы единственной операционкой в окружении

Выбор сочетания Python+PyQt в моем случае определялся низким порогом входа. В вашем это может быть другой набор инструментов.
Странное замечание.
Сейчас винда сама собой управляет через posh, поэтому если кто-то говорит что он работает в среде виндос и не использует его, то…
это можно объяснить только порогом вхождения.
А WPF это самый простой способ создания оконных приложений из ныне существующих.

_____
Пс. В одной книжке (или статье в инете) по wpf автор как раз в нем сделал консоль powershell со всякими плюшками. Идейно смысл близок к данной теме.
Ответ был мне?
поэтому если кто-то говорит что он работает в среде виндос и не использует его, то…
это можно объяснить только порогом вхождения.

Сейчас это Windows (на рабочих станциях). На пред-пред работе был Unix. Нет гарантии, что на следующей работе не будет чего-то еще. И это не считая виртуалок и серверов.
А WPF это самый простой способ создания оконных приложений из ныне существующих.

Есть такая поговорка «Самая короткая дорога — это та, которую вы знаете». Если вы знаете WPF — это прекрасно.

Ответ был rbobot'у.
Ход ваших (sshmakov) мыслей мне понятен)))
Вы не правильно меня поняли, странным выбором я назвал именно Qt + Python, а логичным, с моей точки зрения, PowerShell + WPF.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории