0
matplotlibウィンドウをtkinter GUI内に埋め込もうとしていますが、「スライダ」ウィジェットが表示されない場合があります。実際、以下のコードは埋め込み画像を表示していますが、画像自体をクリックするとスライダのように動作します!TkウィンドウにMatplotlibとスライダを埋め込む
私は任意のヘルプははるかに高く評価され、この質問
Placing plot on Tkinter main window in Python
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from matplotlib.widgets import Slider
import Tkinter as tk
class Embed:
def __init__(self, root):
self.root = root
self.plot = Plotting(self.root)
self.a = np.array([[1,2,3],[2,3,4],[3,4,5]])
self.b = np.array([[1,2,3],[4,5,6],[7,8,9]])
self.ctuple = (self.a,self.b)
self.cube = np.dstack(self.ctuple)
self.button = tk.Button(root, text="check", command=lambda: self.plot.plot(self.cube))
self.button.pack()
class Plotting:
def __init__(self, root):
self.root = root
def plot(self, cube, axis=2, **kwargs):
fig = Figure(figsize=(6,6))
ax = fig.add_subplot(111)
s = [slice(0,1) if i == axis else slice(None) for i in xrange(3)]
im = cube[s].squeeze()
l = ax.imshow(im, **kwargs)
canvas = FigureCanvasTkAgg(fig, self.root)
canvas.get_tk_widget().pack()
canvas.draw()
slider = Slider(ax, 'Axis %i index' % axis, 0, cube.shape[axis] - 1,
valinit=0, valfmt='%i')
def update(val):
ind = int(slider.val)
s = [slice(ind, ind + 1) if i == axis else slice(None)
for i in xrange(3)]
im = cube[s].squeeze()
l.set_data(im, **kwargs)
canvas.draw()
slider.on_changed(update)
if __name__ == '__main__':
root = tk.Tk()
app = Embed(root)
root.mainloop()
root.destroy()
からのアイデアを使用して試してみました!
は、私は三次元の配列を移動するには、スライダを使用して、私のTkinterのGUIのMPLウィンドウを埋め込むしようとしています、応答をありがとうございました。このコードは、埋め込みたいものを示しています。 ボタンをクリックすると新しいウィンドウが生成され、配列をスクロールするスライダバーが表示されます。 – jm22b
の瞬間に2つのダミーアレイしかないので、何が問題なのですか? http://pastebin.com/AxnUZ7EJが私のために働いています。私のコードをチェックしましたか? –
私は謝罪しました。私はあなたのコードをチェックして、スライダを表示していないと思っていましたが、もう一度チェックするとわかります。私が初めて何をしたか分かりません...あなたの助けをありがとうございます "root_"のアンダースコアの意味は何ですか? – jm22b