首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有python cgi的空浏览器屏幕

带有python cgi的空浏览器屏幕
EN

Stack Overflow用户
提问于 2011-12-15 23:05:46
回答 2查看 193关注 0票数 0

我需要在图形中实时显示动态数据。因此,我需要用每秒更新的数据绘制一个新的图表。

问题是我不能在浏览器中清空之前的输出,所以我得到的不是包含更新数据的简单图形,而是很多图形

下面是代码。目前它有随机数据

代码语言:javascript
复制
def graph(data):
    X,Y = 500, 275 #image width and height
    img = Image.new("RGB", (X,Y), "#FFFFFF")
    draw = ImageDraw.Draw(img)

    #draw some axes and markers
    for i in range(X/10):
        draw.line((i*10+30, Y-15, i*10+30, 20), fill="#DDD")
        if i % 5 == 0:
            draw.text((i*10+15, Y-15), `i*10`, fill="#000")
    for j in range(1,Y/10-2):
        draw.text((0,Y-15-j*10), `j*10`, fill="#000")
    draw.line((20,Y-19,X,Y-19), fill="#000")
    draw.line((19,20,19,Y-18), fill="#000")

    for i in range(1,len(data)):
        draw.line((i+20,Y-20,i+20,Y-20-data[i]), fill="#000")

    rtime = str(time.time())
    img.save("../images/out.png"+rtime, "PNG")

    htmlBody = []
    htmlBody.insert(0, 'Content-type: text/html; charset=UTF-8\n') 
    htmlBody.append('<html>')    
    htmlBody.append('<body>')    
    htmlBody.append('<img src=\"../images/out.png'+rtime+'\" alt=\"\" />')

    htmlBody.append("</body>")
    htmlBody.append('</html>')  
    sys.stdout.flush()
    sys.stdout.write('\n'.join(htmlBody))
    sys.stdout.flush()





data = []
if (printgraph!=None):
    sys.stdout = sys.stderr = oldsysout
    for i in range(1,5):
        data.append(int(250*(random.random())))
        graph(data)
        sys.stdout.flush()
        time.sleep(1)
    exit()
EN

回答 2

Stack Overflow用户

发布于 2011-12-15 23:17:41

我将创建一个单独的CGI脚本来创建图像。然后,您可以在图像标记中引用新脚本。src="makepic.py"

遵循this guide,让Python脚本提供动态图像。在页面上,您可以使用JavaScript的settimeout刷新图像。

票数 0
EN

Stack Overflow用户

发布于 2011-12-15 23:19:13

您可以考虑一个带有HTTP "Refresh“头的页面。标题的内容应该是用分号分隔的两个项目。第一个是2(刷新后的秒数),第二个是页面的URL (因为您希望重复内容)。如果需要,您还可以使用META标记从页面内容中注入一个伪头。

不幸的是,这将意味着后端的一些重新组织,因为页面现在必须在每次调用时提供计算的当前状态的表示。这不一定是一件容易的事。

要创建一个页面,其中服务器可以随时“推送”新内容,您需要进行一些编程。考虑交付一个脚本流,这些脚本将DIV属性设置为下一个图的InnerHTML,而不仅仅是交付纯HTML。然后让您的页面请求此内容。这还有一个进一步的优势,即页面不会在每次发送新图形时都完全刷新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8522139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档