Можно ли использовать веб-страницу в качестве пользовательского интерфейса для программы, написанной на Python, работающей локально, без веб-сервера? - PullRequest
1 голос
/ 13 октября 2011

У меня есть программа, написанная на python, и я хотел бы упростить ввод значений параметров для этой программы через графический интерфейс.Я понимаю, что мог бы создать графический интерфейс, используя инструменты Python, но мне интересно использовать страницу html / javascript, и чтобы код javascript вызывал мой сценарий python, когда пользователь нажимает кнопку для запуска.Что-то вроде:

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "../scripts/python_script.py", true);
xmlhttp.send();

В настоящее время, когда я делаю это, я просто возвращаю текст в скрипте python, но на самом деле он не запускается.В идеале скрипт python должен выполняться в фоновом режиме, не блокируя дальнейший ввод на веб-страницу, и, поскольку скрипт генерирует разные файлы результатов (изображения png), они будут отображаться в браузере.Понятно, что я мог бы сделать это с помощью веб-сервера (и, в конце концов, я все равно смогу сделать это, следовательно, через интерфейс html), но мне интересно, возможно ли это сделать без такового.Таким образом, я мог бы упаковать html-страницу и скрипт на python и передать их кому-нибудь, кто мог бы затем запустить программу на своем компьютере без необходимости запуска веб-сервера.Возможно ли это?

Если это не так, есть ли альтернативный способ добиться аналогичного результата?Могу ли я встроить небольшой сервер в скрипт Python, который отображает HTML-страницу при запуске, а затем отвечает на запрос XMLHttpRequest для запуска скрипта Python?Если бы я сделал это, должен ли пользователь запустить скрипт, а затем перейти по указанному адресу в своем браузере как отдельное действие?

РЕДАКТИРОВАТЬ: я получил быстрое решение, работающее с использованием SimpleHTTPServer, но у меня былпосмотрите на бутылку, и я, вероятно, попробую что-нибудь, используя это.Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Вам нужно будет связать некоторый веб-сервер с приложением. Если он не предназначен для развертывания, я бы выбрал что-то вроде bottle.py . Это микро-фреймворк, который имеет свой собственный сервер разработки. Другие микро / мини фреймворки, вероятно, упаковывают свой собственный веб-сервер для разработки (web2py, flask, ..). Если вы хотите что-то более серьезное, вам, вероятно, понадобится более качественный веб-сервер. Если это так - взгляните на это обсуждение Reddit .

0 голосов
/ 13 октября 2011

Прежде всего, используя что-то вроде bottle, довольно просто сделать веб-сервер для запуска вашего скрипта. Посмотрите на http://bottlepy.org/docs/dev/

Хорошей отправной точкой является код на http://bottlepy.org/docs/dev/tutorial.html#http-request-methods, но вы должны создать форму с запросом параметров, а не форму для входа. Затем просто запустите сценарий Python, запишите выходные данные и отправьте их обратно в оператор return.

Этот вопрос Захват вывода подпроцесса показывает два способа запуска основного сценария в зависимости от того, хотите ли вы выводить вывод постепенно или все в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...