如何将 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 放置在屏幕上的特定位置?

python 3.x tkinter,将来自opencv cv2的帧集成到tkinter窗口中

将按键发送到嵌入式 Pygame

在 tkinter 画布中嵌入来自 Arduino 的 Matplotlib 实时绘图数据