2

我用 Python 编写了一个程序,它使用matplotlib和绘制一些图形tkinter
我想在我的网页上显示该程序以供免费使用。
如何让这个 Python 程序在网页上运行?

4

4 回答 4

2

如果您对使用 web 框架烧瓶感兴趣,请查看这个,从关于如何在烧瓶中使用 matplotlib 即时创建图形的讨论中。

我建议将图像存储在 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将它们上传到亚马逊 s3 站点,并将它们显示在您选择的任何框架上。

我正在做的一个当前项目就是这样做的。查看文件:graph.py、tools.py、views.py 和 base.html。当然,这需要了解 boto、flask 和 matplotlib,但至少它为您提供了一个起点。

于 2012-12-22T18:53:19.443 回答
2

您应该查看mod_wsgi和 python 社区中存在的许多 web 包之一,或者构建您自己的。

但是您还需要了解 tkinter 是一个 gui 库,它不会从网络上运行,这听起来像是您想要的。但相反,您可以为您的代码构建一个 Web 界面,如果表示逻辑与应用程序逻辑很好地分离,这应该不难。话虽如此,如果您不熟悉一般编程或特别是 Web 编程,这绝对不是一件容易的事。

于 2012-12-22T18:57:12.893 回答
2

看看Flask作为一个轻量级框架,用于制作 Web 应用程序,然后有一个类似于以下的路由:

@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>标签中呈现它们。

于 2012-12-22T19:31:44.810 回答
1

解决此类问题的常用方法是将程序的核心与界面分开。

一种方法是将程序变成一个模块,然后从 GUI 和 Web 框架中导入该模块。

另一种方法是将程序变成一个守护进程。然后,GUI 和 Web 界面都使用某种消息传递协议与之对话。例如ipython就是一个例子。

于 2012-12-22T19:30:43.440 回答