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

Python: создание настольного приложения с графическим интерфейсом HTML

Этот вопрос связан скорее с методологией.

Я хочу создать настольное приложение Python, но я не хочу, чтобы его графический интерфейс был как tkinter или вроде PyQt. Я предпочитаю иметь красивый и современный клиентский интерфейс, например Bootstrap.

Существует ли какой-либо существующий API для создания таких приложений в Python?

Если это не так: звучит ли разумная рабочая среда для использования какого-либо сервера Python (например, Django или как web2py)), и для запуска нового сервера каждый раз, когда приложение запущенном пользователем, только для того, чтобы ядро ​​приложения находилось на Python, а клиент - в HTML? Кто-нибудь работает таким образом?

4b9b3361

Ответ 1

Используйте встроенную поддержку PyQt или PySide 2, Qt WebEngine и Qt для размещения приложений HTML:

http://doc.qt.io/qt-5/qtwebchannel-index.html

Общая архитектура - это SPA (одностраничное приложение), выполняющееся из локального содержимого HTML и Javascript, поставляемого в комплекте с вашим приложением, - нет необходимости в связывании на веб-сервере.

Для чего-то сложного (например, обхода проблем с разными источниками) используйте Qt WebChannel для сообщения функциональности, построенной на стороне Python.

Это в основном та же архитектура, которую использует Cordova.

Теперь, стоит ли вам создавать приложение таким образом (кашель QML) - это совершенно другая тема.

Ответ 2

Существует ценность наличия локального сервера, который работает с вашим графическим интерфейсом, независимо от того, применяется ли это в вашем случае, в значительной степени зависит от требований приложения. Большинство приложений, которые я пишу, имеют тенденцию к тому, что они становятся многопользовательскими и размещенными, поэтому для меня это совершенно бессмысленно.

Если вы идете по этому маршруту, посмотрите также http://brython.info/, имея одинаковые языки во всем, что позволяет переключать контекст мозга меньше "накладных расходов" (помилуй каламбур).