2012-06-03 311 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およびhttp://stackoverflow.com/questions/5515278/plot-matplotlib-on-the -webが役に立つかもしれません。少し役に立ちました – Ken

+0

、感謝ken。しかし、私が正確に必要とするのは、tkinter(デフォルトでは来る)のインタラクティブな機能です。どうやってやるの? :-) – khan

+1

あなたが必要とするものは、ブラウザで動作する(標準)バックエンドです。私はそのようなバックエンドを知らないが、私はtKinterがその1つであることを期待していないだろう... –

答えて

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

アーサー、おかげで百万人の仲間。私はこれをローカルに実装しましたが、うまくいきました(クロムタブを開く前に数秒かかりますが)。しかし、サーバにアップロードしてWebページ(php exec()関数を使ってpythonファイルを実行する)を使って実行しようとすると、クロムの結果タブが開かない。助言がありますか? – khan

関連する問題