Использование функций Python в HTML
Прежде всего, я не являюсь носителем английского языка, поэтому, пожалуйста, прости меня за любые орфографические ошибки.
Я пытаюсь интегрировать HTML и Python для создания графического интерфейса, который может "говорить" с шиной (шина KNX, если вы заинтересованы).
У меня есть Raspberry Pi с HTML- страницей и некоторыми скриптами Python, которые на самом деле общаются с шиной. Мне удалось запустить скрипты Python из HTML с небольшим количеством PHP (я не особенно опытный в PHP), делая что-то вроде этого:
if (isset($_POST ['button'])){
exec("sudo pathofpythonscript/pythonscript.py")
}
И это работает просто отлично, когда кнопка нажата, скрипт выполняется. Но теперь я хочу запустить скрипт (так как я хочу, чтобы python читал из UART из шины и отображал эту информацию), и когда что-то в скриптах происходит (например, условие, которое выполняется), я хочу быть возможность общаться с HTML, чтобы изменить свойство CSS или что-то еще, что-то вроде этого псевдокода здесь
//This is just pseudo-code to try to illustrate my question, IT'S NOT working code
//In the python file, a simple toggle function
if bus_event
var != var
//in Html, with javascript
if (var_from_python_script == true){
document.getElementById('button').style.background=red;
}
Если бы кто-то мог сказать мне, как сделать простой пример с чем-то вроде скрипта на python, который переключает любой логический параметр, который вводит и возвращает его, и как "захватить" этот возврат из javascript/HTML, чтобы использовать его,
Я думаю, что я могу работать все остальное.
Заранее спасибо!
1 ответ
Вы путаете код HTML/CSS/Javascript, который выполняется в вашем браузере, и код (PHP/Python), который выполняется на сервере. Даже если в вашем случае они могут быть одинаковыми, это не имеет значения. Скрипт python не работает в вашем браузере и поэтому не может изменить состояние вашего html/css или даже javascript.
Когда вы выполняете свой код с помощью exec, сервер PHP запускает внешнюю команду и ожидает ответа на немедленный запрос. После этого все кончено.
Я бы порекомендовал отказаться от PHP и использовать среду веб-приложений Python. Настой, Джанго или что-то еще. Это позволит вам напрямую взаимодействовать с кодом Python. Ваш веб-браузер может затем запросить данные на вашем сервере и узнать, что происходит. Помните, что Интернет обычно только от браузера до сервера.
Теперь, если вам нужно взаимодействие в реальном времени, вы должны взглянуть на веб-сокеты. Они позволят двунаправленную связь между вашим браузером и запущенным приложением Python. Есть несколько предостережений с этой технологией, но она может лучше соответствовать вашим потребностям. Обратите внимание, что это заставит вас писать код Javascript в вашем браузере для управления этой связью, но это не должно быть слишком сложным.