首先,我对编程很新,我对python有一个比较基本的了解,并且对html有一般的了解。
使用我在python中所知道的,我正在尝试创建一个基本的策略游戏,有点像帝国时代或命令与征服,基于收集资源并使用它来构建东西,除了使用简单文本或按钮单击类型界面。我可以做一个文本界面很好,但它有点无聊,我想使用一些图像。我在tkinter上进行了一个小时的讲座,但是我已经尝试过并且未能从中做任何远程“可用”的事情。我能做的就是制作体面的html页面,这样可以很好地满足我的目的。
我想知道的是,是否有一种简单的方法来执行python函数并通过html页面调用/显示python变量? python函数执行所有逻辑和当前变量,它们代表当前资源级别,生产,存储能力,建筑物等级。在最基本的级别,我只需要一种显示这些变量的方法,并具有执行功能的按钮比如说,升级一个建筑物,重新计算生产和所有这些,并返回一组新的值。
作为一个非常简单的例子:
<p> Wheat production: *python integer representing production*</p>
<button type="button" onclick="*execute python variable*">Upgrade Wheat</button>
我想,还需要以某种方式更新html页面上更改的变量。因此按钮执行升级小麦生产的功能,python现在有一个小麦生产变量的新值,这需要在页面上更新,无论是自动还是其他方法。我想简单的方法就是按下按钮也可以重新加载页面,但这看起来有点笨拙。
有谁知道这样做的简单方法?或者也许是一个可以帮助我的python库?
答案 0 :(得分:2)
是的,有办法做到这一点。
这有两种方法。一种是在服务器上完成所有工作,另一种方法是使用Javascript。
第一种方法是:编写一个生成HTML的python脚本。如果你使用Django,你会得到很多工作,但你也会得到许多你不想要的东西。 Django确实有内置的模板语言。 Django超出了这个答案的范围。你将完全按照上面描述的那样做;模板的示例可能是<p> Wheat production: {{wheat_production}}</p>
- 您的python代码将设置一个字典mydict={"wheat_production":10}
,您将模板文件的名称和字典传递给将吐出页面的函数。如果还没有这样做,您还必须了解HTML表单。
另一种方法是使用Ajax - Javascript,当您的页面显示时(或许,当点击按钮时,或定期)时,将发送/接收一些数据以允许您更新页面。我建议调查JQuery为你做一些提升。这意味着您可以更新页面的位而无需重新加载整个页面。您仍然需要在服务器上编写一些代码来与数据库通信,并将输出(通常是JSON)发送回客户端。
编写此类内容时,请确保所有安全性都在服务器端,并且不要信任用户告诉您的任何内容。例如,如果您将金币的数量存储在表单上的字段中,那么将花费大约10秒的时间为自己提供尽可能多的黄金。同样,如果一个玩家可以出售20颗金币的钻石,那么在给它们金币之前确保他们有钻石 - 你不想最终得到一个拥有1,000,000金币和负一千颗钻石的玩家。 Javascript是100%不安全的,Javascript可以做的任何事情,玩家也可以这样做。
答案 1 :(得分:2)
什么是pyjs?
pyjs是一个富Internet应用程序(RIA)开发平台 Web和桌面。使用pyjs,您可以编写基于JavaScript的程序 Web应用程序完全使用Python。
pyjs包含一个Python-to-JavaScript编译器,一个AJAX框架和一个 Widget Set API。 pyjs起源于Google Web的Python端口 Toolkit,Java-to-JavaScript编译器。
您可以将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)