如何将 python tkinter 窗口嵌入浏览器?
Posted
技术标签:
【中文标题】如何将 python tkinter 窗口嵌入浏览器?【英文标题】:How to embed python tkinter window into a browser? 【发布时间】:2012-06-08 03:11:17 【问题描述】:好的..python 程序的输出显示在 Tkinter 窗口中..单独打开。我想要做的是在浏览器中嵌入这个窗口。代码如下:
import numpy as np
import matplotlib
import matplotlib.cbook as cbook
import matplotlib.image as image
import matplotlib.pyplot as plt
datafile = cbook.get_sample_data('logo2.png', asfileobj=False)
print 'loading', datafile
im = image.imread(datafile)
im[:,:,-1] = 0.5 # set the alpha channel
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(20), '-o', ms=20, lw=2, alpha=0.7, mfc='orange')
ax.grid()
fig.figimage(im, 10, 10)
plt.show()
考虑所有变量都是从浏览器表单字段中给出的输入参数。请帮忙!! :-)
【问题讨论】:
matplotlib.sourceforge.net/faq/… 和 ***.com/questions/5515278/plot-matplotlib-on-the-web 可能会有所帮助。 这有点帮助,谢谢 ken。然而,我真正需要的是 tkinter 的交互功能(默认情况下),可以在网络上使用生成的图片。我怎样才能做到这一点? :-) 您需要的是在浏览器中工作的(标准)后端。我不知道有任何这样的后端,但我不希望 tKinter 成为其中之一...... 【参考方案1】:基于Joe Kington's answer 的类似问题,后端mplh5canvas 可能是您正在寻找的。调整您的示例代码以使用它,
import numpy as np
import matplotlib
import mplh5canvas
matplotlib.use('module://mplh5canvas.backend_h5canvas')
import matplotlib.cbook as cbook
import matplotlib.image as image
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(20), '-o', ms=20, lw=2, alpha=0.7, mfc='orange')
ax.grid()
plt.show(open_plot=True)
它似乎与您正在寻找的那种交互性很好地配合,甚至允许动画。话虽如此,它并不支持所有浏览器,如installation wiki page 中所述。如果限制使用 Chrome、Safari 或 Opera(在这种情况下需要一些配置,请检查该页面)是可以接受的,那么它应该很适合您,但可能还需要一些实验。
【讨论】:
亚瑟,谢谢一百万兄弟。我在本地实现了这个,它工作正常(虽然在打开 chrome 选项卡之前需要几秒钟)。但是,当上传到服务器并尝试通过网页运行它(使用 php exec() 函数执行 python 文件)时,它不起作用,即没有在我的 chrome 中打开结果选项卡。有什么建议吗?以上是关于如何将 python tkinter 窗口嵌入浏览器?的主要内容,如果未能解决你的问题,请参考以下文章
将matplotlib嵌入到tkinter画布中会打开两个窗口
如何将 JPEG 图像插入 python Tkinter 窗口?
如何将窗口应用程序 python/tkinter 放置在屏幕上的特定位置?