Разработка прототипа QT/C++ в Python

Я хочу записать приложение C++ с QT, но создать прототип сначала с помощью Python и затем постепенно заменять код Python C++.

Действительно ли это - правильный подход, и какие инструменты (привязка, обязательные генераторы, IDE) я должен использовать?
Идеально, все должно быть доступным в репозиториях Ubuntu, таким образом, я не должен был бы волноваться о несовместимых или старых версиях и иметь все настроенное с простым aptitude install.
Есть ли какая-либо подробная документация об этом процессе, или я должен изучить каждый компонент, и если да, которые?

Прямо сейчас у меня есть разнообразный выбор сделать: спокойный Создатель, из-за хорошего автоматического завершения и спокойная интеграция.
Eclipse, поскольку это предлагает поддержку и C++ и Python. Eric (еще не использовали его), Vim

PySide, поскольку это работает с CMake и Повышением. Python, так теоретически это сделает код Python замены легче. PyQt, поскольку это более широко использовало (больше поддержки) и доступно как пакет Debian.

Править: Поскольку я должен буду развернуть программу на различных компьютерах, C ++-solution потребовал бы 1-5 файлов (программа и некоторые файлы библиотеки, если бы я связываю его статически), с помощью Python я должен был бы создать PyQt/PySide/SIP/whatever на каждой платформе и объяснить, как установить Python и все остальное.

25
задан tstenner 22 April 2010 в 19:53
поделиться

2 ответа

Я хочу написать приложение C ++ с Qt, но сначала создаю прототип, используя Python, а затем постепенно заменяю код Python на C ++. Это правильный подход?

Это зависит от ваших целей. Сделав и то, и другое, я рекомендую вам оставаться с Python везде, где это возможно и разумно. Хотя это требует некоторой дисциплины, на Python очень возможно писать очень большие приложения. Но если вы обнаружите горячие точки и вещи, которые можно лучше обрабатывать на C ++, вы, безусловно, можете перенести соответствующие части на C ++.

Есть ли какая-либо исчерпывающая документация по этому процессу, или мне нужно изучить каждый компонент, и если да, то какие?

Вот что я бы порекомендовал для различных частей:

EDITOR / IDE : Используйте любой удобный вам редактор / IDE, но я настоятельно рекомендую тот, который поддерживает рефакторинг. Если вам комфортно с Eclipse, используйте его. Если вы хотите в основном пойти по пути C ++ и не слишком знакомы с какими-либо редакторами, вам может быть лучше с QtCreator. Эрик - чрезвычайно хорошая IDE для Python с поддержкой рефакторинга, обратите внимание, если вы не собираетесь много заниматься C ++. Более того, его исходный код является примером правильного использования и практики PyQt.

ПРОЦЕСС :

Краткое изложение:

  1. Напишите свое приложение на Python, используя PyQt
  2. Если идентифицированы как горячие точки, преобразовать разделенные классы Python в C ++
  3. Создать привязки для этих классов using SIP
  4. Импортируйте новые библиотеки в Python вместо их аналогов Python
  5. Наслаждайтесь увеличением скорости

Общие сведения:

Напишите приложение на Python с помощью PyQt. Будьте осторожны, чтобы обеспечить хорошее разделение задач , чтобы при переносе частей на C ++ они были отделены от их зависимостей. Когда вам наконец нужно что-то перенести на C ++, напишите это на C ++ / Qt, а затем создайте для него привязки, используя SIP . У SIP есть хорошее справочное руководство по этому процессу, и у вас есть весь PyQt в качестве примера.

РАЗВЕРТЫВАНИЕ :

C ++ - Для многих приложений зависимости достаточно просты, поэтому не так уж сложно создать установщик с помощью такого инструмента, как Установщик NullSoft или InnoSetup .

Python / PyQt - Приложения PyQt немного сложнее установить из-за зависимости от Python и его зависимости от наличия библиотек Qt. Один человек задокументировал свои усилия на этой публикации в ARSTechnica . py2exe довольно хорошо работает в Windows и должен работать нормально. IME, зависание.py , который поставляется с исходным кодом Python, иногда имеет проблемы с определением, какие разделяемые библиотеки действительно необходимы, а иногда приводит к созданию двоичного файла, зависимости которого отсутствуют. Py2app можно заставить работать в Mac OS X .

Но хуже , однако, является лицензирование PyQt / Qt. Если вы разрабатываете коммерческое приложение, вам необходимо иметь коммерческую лицензию PyQt (и Qt) и убедиться, что пользователи не могут легко изменять исходный код или иным образом писать код для PyQt / Qt API из-за лицензионных ограничений . Из-за этого автор PyQt создал инструмент под названием VendorId (хотя у него есть лицензия Python). В VendorId есть инструмент под названием SIB , который можно использовать для создания исполняемого файла, который зависит только от интерпретатора Python. Но если вы собираетесь зайти так далеко, вы можете установить собственный Python вместе со своим приложением.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : я вообще не использовал PySide , поэтому я не уверен, как он сравнивается с PyQt. Также обратите внимание на следующее предупреждение на их веб-сайте:

PySide находится в стадии разработки и еще не подходит для разработки приложений, требующих стабильности на производственном уровне.

Но следует отметить, что они намереваются, по крайней мере, в первоначальном выпуске «поддерживать совместимость API с PyQt». Таким образом, помимо привязок C ++, вы можете легко переключаться между ними позже.

36
ответ дан 28 November 2019 в 21:15
поделиться

Если вы только изучаете Qt и хотите использовать скорость прототипирования, которую дает вам Python, я бы порекомендовал вам создать образец проекта с использованием PyQt . Как вы сказали, существует пакет debian, так что вы просто apt-get от создания вашего первого приложения.

Я лично использую gVim в качестве редактора Python / Qt, но вы действительно можете без особых проблем использовать любой совместимый с Python редактор. Мне понравился WingIDE , и у них есть автозаполнение для Qt, но как только вы проглотите vim kool-aid, переключиться будет сложно.

Я бы сказал, что PySide на 95% + совместим с PyQt , а лицензия LPGL - это хорошо, но если вы просто пытаетесь создать прототип своего первого Qt app, то я не думаю, что есть реальная причина использовать PySide . Хотя мне больше нравятся документы PySide , вы также можете просто использовать их и заменить все ссылки на библиотеки на PyQt .

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

3
ответ дан 28 November 2019 в 21:15
поделиться
Другие вопросы по тегам:

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