【发布时间】:2012-12-09 22:41:26
【问题描述】:
我用 Python 编写了一个程序,它使用 matplotlib 和 tkinter 绘制一些图形。
我想在我的网页上显示该程序以供免费使用。
如何让这个 Python 程序在网页上运行?
【问题讨论】:
标签: python html matplotlib tkinter
我用 Python 编写了一个程序,它使用 matplotlib 和 tkinter 绘制一些图形。
我想在我的网页上显示该程序以供免费使用。
如何让这个 Python 程序在网页上运行?
【问题讨论】:
标签: python html matplotlib tkinter
您应该查看mod_wsgi 和 python 社区中现有的众多网络包之一,或者构建您自己的。
但是您还需要了解 tkinter 是一个 gui 库,它不会从网络上运行,这听起来像是您想要的。但相反,您可以为您的代码构建一个 Web 界面,如果表示逻辑与应用程序逻辑很好地分离,这应该不难。话虽如此,如果您是一般编程或特别是 Web 编程的新手,这绝对不是一件容易的事。
【讨论】:
看看Flask 是一个轻量级框架,用于制作网络应用程序,然后有一个类似的路由:
@app.route("/graph/<input>")
def drawGraph(input):
# Graph drawing code goes here.
image = # The image file as a string, as if you'd read it in from a file
# object
return Request(image, mimetype="image/png")
然后在模板中,您可以使用/graph/ url 为适当的输入获取图形并将它们呈现在<img> 标签中。
【讨论】:
如果您对使用网络框架烧瓶感兴趣,请查看this,从这个讨论中了解如何创建graph on-the-fly using matplotlib in flask.
我建议将图像存储在 amazons s3 服务之类的地方。这样,图像将很容易在会话之间进行访问。所以从上面的线程链接修改代码...
以 png 格式返回对象:
from matplotlib.pyplot import figure
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
import StringIO
def create_a_graph()
fig = figure(figsize=a_size_integer,a_size_integer))
canvas = FigureCanvas(fig)
canvas.print_png(png_output)
return png_output
然后使用 boto 将它们上传到 amazons s3 站点,并在您选择的任何框架上显示它们。
我正在研究的current project 就是这样做的。查看文件:graph.py、tools.py、views.py 和 base.html。当然,这需要了解 boto、flask 和 matplotlib,但至少它为您提供了一个起点。
【讨论】: