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

Хорошо ли работает Python с QML (Qt-Quick)?

Я начинаю в Qt-Quick. Я не знаю Qt, который является основой для QML. А также я не знаком с С++, который снова является основным поддерживаемым языком для Qt и QML. Я знаю, что JS может сделать много логики в самом слое QML. Но если нам нужны взаимодействия с ОС, мы должны использовать некоторый базовый язык. Поскольку мне нравится Python, я планирую использовать комбинацию QML-JS-Python.

Итак, Мои вопросы:

  • Для расширенного приложения и разработки игр ли Python и Qt-Quick хорошо сочетаются?
  • Является ли мое комбинированное трио (QML-JS-Python) достаточно хорошим для этого?
  • И мне нужно изучить Qt для разработки приложений для связи с Python из QML?
  • Если да для Qust 3, то должен ли я изучать полный Qt или только те несколько строк кода, которые являются дверью связи между Python и QML?

Извини, если я немой, ставя эти Вопросы. Но я хотел бы принять предложения и мнения.

Изменить: Любые ограничения для этого сочетания QML-JS-Python

Спасибо в Advance

4b9b3361

Ответ 1

На концептуальном уровне они прекрасно сочетаются друг с другом. Я написал программу на python/qml/js/opengl, которая довольно хорошо сочетает все. Это было с Qt4.7 и PySide.

Если вы просто используете QML, вы можете минимизировать количество Qt, с которым вам нужно столкнуться (хотя, как всегда, больше знаний делает вас более сильным). По сути, когда у вас есть qdeclarativeview, ваша работа над Qt выполняется отдельно от обработки сигнала/слота, что очень приятно в PySide. Я бы сказал, что вы можете быстро работать продуктивно, используя Python и QML, не слишком заботясь о стороне Qt, выбирая ее по мере необходимости.

Исходя из опыта, я предлагаю сделать разграничение между Python и QML ясным для вас. Я очень ограничил QML логикой GUI, что очень хорошо; по сути, QML обрабатывает реакцию интерфейса на входы, а затем отправляет сигналы обратно в основную программу. Это немного похоже на создание очень простого, урезанного интерфейса между графическим интерфейсом и остальной частью программы, только сигнализируя логику высокого уровня (вместо того, чтобы, например, отправлять ответный щелчок, он посылает сигнал, например, " включить обработку ", графический интерфейс будет иметь дело с тем, как отобразить это изменение). В моем случае это просто подключено прямо к моей инфраструктуре MVC, но вы можете сделать это, как вам нравится.

Во всем этом есть одна большая жирная оговорка. Разработка PySide довольно застопорилась и в настоящее время не поддерживает Qt5 и все его усовершенствования QML. Там были различные дискуссии о том, как это должно быть поддержано, но не так много кода было зафиксировано.

Я считаю, что PyQt поддерживает Qt5, но с двойной лицензией как GPL или коммерческая (PySide - это LGPL, поэтому может использоваться с закрытым исходным кодом). У меня нет опыта PyQt, кроме него, и PySide примерно заменитель друг друга.

Похоже, я говорю об использовании его в качестве MVVM.

(любые вопросы об ограничениях): весь Qt предоставляется через PySide и PyQt. Это означает, что вы можете писать расширения на Python так же, как и на C. Я написал виджет, который захватывал события прокрутки мыши, чтобы я мог украсть прокрутку из Flickable. Это был элемент QML, созданный в Python, хотя мне также пришлось загрузить его из Python; Я не мог понять, как создать расширение, которое я мог бы загрузить изнутри документа QML. Конечно, можно написать расширение C, которое будет автономно для вашего основного кода, так что у вас все еще всегда есть эта опция.

Ответ 2

По состоянию на апрель 2016 года PySide теперь официально поддерживается компанией Qt.

Официальная домашняя страница здесь. Лицензирование LGPL является вариантом, который, по-видимому, является основной причиной, по которой проект был создан в первую очередь.