执行python函数并从htm读取变量

2024-09-28 16:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我对编程非常陌生,对python有比较基本的了解,对html也有一般的理解。在

使用我在python中所知道的,我试图创建一个基本的战略游戏,有点像帝国时代,或命令和征服,基于收集资源和使用它来建立东西,除了使用简单的文本或按钮点击式界面。我可以做一个文本界面很好,但它有点无聊,我想用一些图像。我有一个关于tkinter的一个小时的讲座,但是我试着从中得到任何可以远程“使用”的东西,但是没有成功。我能做的,就是做一个好看的html页面,这将很好地满足我的目的。在

我想知道的是,是否有一种简单的方法可以通过html页面执行python函数和调用/显示python变量?python函数执行所有的逻辑并显示变量,这些变量表示当前的资源水平、生产、存储能力、建筑物的级别等。在最基本的级别上,我只需要一种显示这些变量的方法,并有按钮来执行一个函数,比如说,升级一个建筑,它会重新计算生产等,并返回新的值集。在

举个简单的例子:

<p> Wheat production: *python integer representing production*</p>
<button type="button" onclick="*execute python variable*">Upgrade Wheat</button>

我想,还需要以某种方式更新html页面上更改的变量。所以按钮执行了一个功能来升级小麦产量,python现在有了小麦产量变量的新值,这需要在页面上更新,不管是自动的还是通过其他方法。我想最简单的方法是按下按钮也可以重新加载页面,但这似乎有点笨拙。在

有人知道一个简单的方法吗?或者一个python库可以帮到我吗?在


Tags: 方法函数文本界面html编程button页面
2条回答

是的,这是有办法的。在

有两种方法可以解决这个问题。一种方法是在服务器上完成所有工作,另一种方法是使用Javascript。在

第一种方法是:编写一个python脚本来生成HTML。如果你使用Django,你会为你完成很多工作,但是你也会得到很多你不想要的东西。Django有一个内置的模板语言。Django超出了这个答案的范围。您将完全按照上面描述的方式进行操作;模板的一个例子可能是<p> Wheat production: {{wheat_production}}</p>-您的python代码将设置一个dict mydict={"wheat_production":10},您将把模板文件的名称和dict传递给一个函数,该函数将输出您的页面。如果你还没有学习HTML表单,你还必须学习HTML表单。在

另一种方法是使用Ajax-Javascript,当页面显示时(也许,当点击按钮时,或者定期)将发送/接收一些数据,以允许您更新页面。我建议调查JQuery为您做一些提升。这意味着您可以更新页面的一部分而不必重新加载整个页面。您仍然需要在服务器上编写一些代码来与数据库对话,并将输出(通常是JSON)发送回客户机。在

在编写此类内容时,请确保您的所有安全性都在服务器端,不要信任用户告诉您的任何内容。例如,如果您在表单的某个字段中存储了黄金的数量,则某人需要大约10秒才能给自己想要的黄金量。类似地,如果一个玩家能以20个金币卖出一颗钻石,那么在给他们金币之前确保他们已经拥有了钻石——你不想让一个玩家得到1000000个金币而负1000个钻石。Javascript是100%不安全的,Javascript能做的任何事,玩家也能做到。在

看看http://pyjs.org/

What is pyjs?

pyjs is a Rich Internet Application (RIA) Development Platform for both Web and Desktop. With pyjs you can write your JavaScript-powered web applications entirely in Python.

pyjs contains a Python-to-JavaScript compiler, an AJAX framework and a Widget Set API. pyjs started life as a Python port of Google Web Toolkit, the Java-to-JavaScript compiler.

您可以将Python程序编译为javascript,也可以使用它们的Python库来生成HTML。下面是他们的getting started指南中的一个示例:

from pyjamas import Window
from pyjamas.ui import RootPanel, Button

def greet(sender):
    Window.alert("Hello, AJAX!")

class Hello:
    def onModuleLoad(self):
        b = Button("Click me", greet)
        RootPanel().add(b)

相关问题 更多 >