2012-06-03 234 views
5

好的..一個python程序的輸出顯示在一個Tkinter窗口中,該窗口分開打開。我想要做的是在瀏覽器中嵌入此窗口。代碼如下:如何將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() 

考慮到所有變量都是從瀏覽器窗體字段中給出的輸入參數。請幫忙!! :-)

+0

http://matplotlib.sourceforge.net/faq/howto_faq.html#matplotlib-in-a-web-application-server and http://stackoverflow.com/questions/5515278/plot-matplotlib-on-the -web可能會有所幫助。 – Ken

+0

這有點有用,謝謝ken。然而,我確實需要的是tkinter的交互功能(默認情況下會出現在web上)以及生成的圖片。我怎樣才能做到這一點? :-) – khan

+1

你需要的是一個在瀏覽器中工作的(標準)後端。我不知道任何這樣的後端,但我不希望tKinter成爲其中之一... –

回答

5

基於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(在這種情況下通過一些配置,請檢查該頁面)是可以接受的,那麼它應該適合你,儘管可能也需要一些實驗。

+0

亞瑟,感謝百萬兄弟。我在本地實現了它,並且它工作正常(雖然在打開chrome選項卡之前需要幾秒鐘)。但是,當上傳到服務器上並嘗試通過網頁(使用php exec()函數執行python文件)運行時,它不起作用,即不能打開我的chrome中的結果選項卡。有什麼建議麼? – khan