将HTML GUI和Python集成到繁重的计算中

时间:2017-04-30 20:00:36

标签: javascript python-3.x user-interface

我刚才正在使用真正的GUI重要的东西,我正在寻找为Python 3应用程序/(“游戏”?)集成GUI。我需要这是跨平台的,响应迅速的,并能够与其他用户和服务器进行通信。

我看过桌面应用程序的创建,但我认为最好的是Web应用程序。现在,这里有障碍:

  1. 我需要网络应用程序才能使用我的所有Python 3代码作为黑盒子;它需要能够向正在运行的python代码发送函数调用。
  2. 如果单个值发生更改,页面上的所有内容都会更改。
  3. 如果其他用户更改了某个值,则会立即影响其他多个用户。
  4. 我不能不断刷新页面。
  5. HTML“GUI”需要与Python代码有一定程度的分离。 (我不能让Python发送HTML片段,只允许数据。)
  6. 我意识到这需要解决很多,所以我的问题是: 如何制作具有特定(大多数)数据值的Web应用程序,而不必刷新整个页面?

    我提出的解决方案会有一些简单的javascript不断检查,看看是否有任何内容已发布给彼此密切互动的用户(如果你愿意的话,同一服务器中的玩家)。 HTML中的每个值都有一个链接的javascript函数,该函数链接到后端python代码中的值或函数。

    “播放器”更改网页上的值 - > JavaScript函数调用 - > “服务器”上的Python黑框 - > JavaScript检查循环看到通过“服务器”上的简单Python变量进行了更改 - > JavaScript通过调用python代码中的函数获取所有值 - >更新所有“玩家”的HTML

    最后,请注意,我不知道如何执行我提出的解决方案,我非常欢迎一种不同的,更好的方法。提前谢谢。

1 个答案:

答案 0 :(得分:0)

所以,对于那些试图和我做同样事情的人来说,答案就是所谓的" websockets"。

我最初尝试过Kivy,但发现它太麻烦而且难以获得良好的样式。使用HTML,CSS和JavaScript,你可以制作非常漂亮的外观,而Kivy不够强大在不必编写大量多余代码的情况下制作有吸引力的东西。由于我尝试制作的内容基本上是一种风格化的数据读取/ hud,因此HTML组合可以解决问题。

我目前用于websockets的是一个名为" Tornado"的模块。它允许您更新客户端上的任何数据,而无需重新加载页面。我将此数据作为单个JSON发送以更新整个页面。

总之,我决定使用HTML / CSS / JavaScript进行GUI和Python / Tornado进行快速服务器端计算。