Ich versuche, ein Matplotlib-Fenster in eine Tkinter-GUI einzubetten, aber ich habe Probleme, das "Slider" -Widget angezeigt zu bekommen. Der folgende Code zeigt zwar ein eingebettetes Bild, aber das Bild selbst verhält sich wie ein Schieberegler, wenn Sie darauf klicken!Einbetten von Matplotlib und Slider in Tk-Fenster
ich die Ideen von dieser Frage
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()
jede Hilfe ist sehr geschätzt unter Verwendung haben versucht!
Sie für die Antwort danken, Ich versuche, ein mpl Fenster in meinem tkinter gui einzubetten, die einen Schieber verwendet durch ein 3D-Array zu bewegen. Dieser Code veranschaulicht, was ich einbetten möchte http://pastebin.com/AxnUZ7EJ Das erzeugt ein neues Fenster nach einem Klick, mit einem Schieberegler, um durch die Arrays zu scrollen. Es gibt nur zwei Dummy-Arrays im Moment – jm22b
Also was ist das Problem? http://pastebin.com/AxnUZ7EJ funktioniert für mich. Hast du meinen Code überprüft? –
Ich entschuldige mich, ich habe Ihren Code überprüft und dachte, dass es keinen Schieberegler zeigt, aber wenn ich es nochmal überprüfe, kann ich sehen, dass es funktioniert. Nicht sicher, was ich beim ersten Mal gemacht habe ... Danke für Ihre Hilfe Was ist die Bedeutung des Unterstrichs in "root_"? – jm22b