更新网页GUI的问题

时间:2014-10-30 09:35:59

标签: python django matplotlib

我有一个django网站,它将显示各种matplotlib图。我能够创建一个matplotlib图,将其转换为png并显示它,...但仅当所有逻辑都包含在相关应用程序的views.py文件中时。

如果我只需要一个带有简单情节的相当基本的页面,那就没问题了。然而问题是整个网站需要几个涉及他们自己的python文件,逻辑等的图。

所以我所做的是在app中创建一个新文件夹,其中包含用于计算各种图的python文件。从view.py中我计划只调用相关的python文件,它将返回图。通过这样做,我可以保持关于如何创建绘图与页面显示分开的逻辑。

我遇到的问题是以下错误

QPixmap: It is not safe to use pixmaps outside the GUI thread

在研究此错误后,当您尝试从其他线程更新GUI时,这显然是个问题。然而,这不是我想要做的。我试图在views.py文件之外创建绘图,然后将其传回并创建png以更新页面。那么GUI的更新不应该发生在另一个线程中吗?

我在views.py中的代码是:

fig = plotLogic.getPlot() #this is a call to a separate file which returns the figure
canvas=FigureCanvas(fig)
response=django.http.HttpResponse(content_type='image/png')
canvas.print_png(response)
return response

有没有其他方法可以完成我想要做的事情?基本上只是保持绘图如何创建的逻辑分离并返回绘图,以便它可以转换为png并显示。

我觉得我在某种程度上使它变得比它应该更复杂。我不是故意尝试做任何想要在单独的线程中更新GUI的事情。 非常感谢。

0 个答案:

没有答案