【问题标题】:Using python functions in html在 html 中使用 python 函数
【发布时间】:2018-04-22 19:52:10
【问题描述】:

首先,我的母语不是英语,所以请原谅我可能有任何拼写错误。

我正在尝试集成 HTMLPython 来创建一个 GUI 可以对总线“说话”(如果您是 KNX 总线)有兴趣)。

我有一个带有 HTML 页面和一些 Python 脚本的树莓派,这些脚本实际上是与总线通信的。我已经设法用一点 PHP 从 HTML 运行 python 脚本(我不是特别精通 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 脚本切换输入和 返回它的任何 boolean 参数,以及如何"grab" 从 javascript/HTML 返回以使用它,

我想我可以做其他所有事情。

提前谢谢你!

【问题讨论】:

    标签: javascript python html bus knx


    【解决方案1】:

    您混淆了在浏览器中运行的 HTML/CSS/Javascript 代码和在服务器上运行的 (PHP/Python) 代码。即使在您的情况下,它们可能相同,也没关系。 python 脚本未在您的浏览器中运行,因此无法更改 html/css 甚至 javascript 的状态。

    当您使用 exec 执行代码时,PHP 服务器 正在运行外部命令并期待对即时请求的响应。之后就结束了。

    我建议放弃 PHP 并使用 Python Web 应用程序框架。 Flask、Django 或其他任何东西。这将允许您直接与 python 代码交互。然后,您的 Web 浏览器可以向您的服务器请求数据并知道发生了什么。请记住,网络通常只是从浏览器到服务器。

    现在,如果您需要实时交互,您应该看看 websockets。这些将允许您的浏览器和正在运行的 python 应用程序之间进行双向通信。这项技术有许多注意事项,但它可能更适合您的需求。请注意,这将迫使您在浏览器中编写 Javascript 代码来管理此通信,但这应该不会太难。

    【讨论】:

    • 所以,为简单起见,假设我有 2 个 pyhton 函数,一个用于写入,一个用于从总线读取。如果我使用 Django 或任何其他 Web 应用程序框架,我是否能够使用“类似 Arduino”的代码结构,这样我可以检查总线上的事件(使用读取功能),并与我的总线交互写函数?我对实时交互不感兴趣,就像我们在电力电子中使用的那些,我只想要 UI 中显示的变量的合理刷新率。谢谢你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2012-06-04
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多