私は本当にPythonに夢中になり、Matlabから離れようとしています。PythonでMatlabスタイルのGUIを作成することは可能ですか?比較するとどれくらい簡単ですか?(私はプログラムでmatlab GUIを作成しますが、あえてGUIDEを使用しません)これらのGUIにmatplotlibグラフィックを配置できますか?これにはtkまたはwx(または他の何か)の方が良いですか?
3 に答える
単純なインターフェースについては、matplotlibが提供するGUIニュートラルウィジェットを確認することをお勧めします。ここに記載されています-http ://matplotlib.org/api/widgets_api.html
これらのGUIニュートラルウィジェットを使用して、3つのスライダーウィジェットによって制御される可変パラメーターを持つ関数を描画する簡単な例を次に示します。
import functools
import numpy as np
import pylab
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons, MultiCursor
def hillfxn(x, B, K, n):
xn = float(x**n)
return (B * xn)/(K**n + xn)
def draw_function(x, y, xlabel="Activator concentration (X)",
ylabel="Promoter activity"):
fig, ax = plt.subplots(1, 1, sharex=True)
plt.subplots_adjust(left=0.15, bottom=0.25)
lines = ax.plot(x, y)
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
ax.set_ylim(0,max(y)*1.1)
return fig, ax, lines
def draw_interactive_controls(n, B, K):
axcolor = 'lightgoldenrodyellow'
axK = plt.axes([0.1, 0.01, 0.75, 0.03], axisbg=axcolor)
axB = plt.axes([0.1, 0.06, 0.75, 0.03], axisbg=axcolor)
axN = plt.axes([0.1, 0.11, 0.75, 0.03], axisbg=axcolor)
Nslider = Slider(axN, "$n$", 1, 10, valinit=n, valfmt='%1.3f')
Bslider = Slider(axB, "$\\beta$", 0, 20, valinit=B, valfmt='%1.3f')
Kslider = Slider(axK, "$K$", 0.01, 20, valinit=K, valfmt='%1.3f')
return Nslider, Bslider, Kslider
def update_plot(val, x=None, lines=None, ax=None,
Nslider=None, Bslider=None, Kslider=None):
n = Nslider.val
B = Bslider.val
K = Kslider.val
y = [hillfxn(i, B, K, n) for i in x]
lines[0].set_ydata(y)
ax.set_ylim(0,max(y)*1.1)
pylab.draw()
if __name__ == "__main__":
# initial values
B, K, n = 5, 5, 1
x= np.linspace(0,30,250)
y = [hillfxn(i, B, K, n) for i in x]
# setup initial graph and control settings
fig, ax, lines = draw_function(x,y)
Nslider, Bslider, Kslider = draw_interactive_controls(n, B, K)
# specify updating function for interactive controls
updatefxn = functools.partial(update_plot, x=x, lines=lines, ax=ax,
Nslider=Nslider, Bslider=Bslider, Kslider=Kslider)
Nslider.on_changed(updatefxn)
Bslider.on_changed(updatefxn)
Kslider.on_changed(updatefxn)
pylab.show()
これにより、次のようなインターフェイスが生成されます。
wxPython には、タブ、グリッド、または ListCtrls (テーブル) があり、グラフ用に matplotlib と PyPlot をサポートしています。次のリンクで matplotlib の使用について読むことができます。
- http://eli.thegreenplace.net/2008/08/01/matplotlib-with-wxpython-guis/
- WxPython パネル内に matplotlib Figure を埋め込む
- http://www.scipy.org/Cookbook/Matplotlib/EmbeddingInWx
- http://wiki.wxpython.org/MatplotlibFourierDemo
wxPython に含まれているすべてのウィジェットを表示するには、www.wxpython.org にアクセスし、左側のダウンロード リンクをクリックします。ほぼすべてのウィジェットとその仕組みを示すスタンドアロンの Docs & Demo パッケージがあることがわかります。
これまでMatlabを使用したことがなく、GUIについてはわかりません。しかし、Python を対話的に使用する傾向がある場合は、iPython を試してみてください。Ipython with Qt はエレガントな GUI をレンダリングできます。