[英]How to update matplotlib with Scale widget in Tkinter
import numpy as np
from Tkinter import *
from ttk import *
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
def on_key_event(event):
print('you pressed %s'%event.key)
key_press_handler(event, canvas, toolbar)
def mOpen():
var = IntVar()
slider_1 = Scale(mGui,orient=HORIZONTAL,length = 100,from_=0,to=9,variable=var)
slider_1.place(x = 765,y=390)
t = np.arange(100000).reshape(100,100,10)
f = Figure(figsize=(5,4),dpi=100)
a = f.add_subplot(111)
a.imshow(t[:,:,var.get()])
print var.get()
canvas_3 = FigureCanvasTkAgg(f,master = mGui)
canvas_3.show()
canvas_3.get_tk_widget().place(x=5,y=5)
toolbar_3 = NavigationToolbar2TkAgg( canvas_3, mGui )
toolbar_3.update()
toolbar_3.place(x=10,y=15)
canvas_3._tkcanvas.place(x=7,y=7)
canvas_3.mpl_connect('key_press_event', on_key_event)
mGui = Tk()
mOpen()
mGui.geometry('900x900+300+10')
mGui.title('Plot')
mGui.mainloop()
I tried to update the plot using a.imshow(t[:,:,var.get()])
command. 我尝试使用a.imshow(t[:,:,var.get()])
命令更新图。 However on updating scale the values for third coordinate( var.get()
) are not changing. 但是,在更新比例时,第三坐标( var.get()
)的值不会更改。
How can i update plot using Scale widget output? 如何使用“缩放”小部件输出来更新绘图?
you need to use the command=
argument to Scale
to call a function every time the widget is modified. 每次修改小部件时,都需要使用Scale
的command=
参数来调用函数。 In this function, you can update your plot. 在此功能中,您可以更新绘图。
The code is a little messy because you have to have access to your numpy array and the axes and canvas in that function, but this works: 该代码有些混乱,因为您必须有权访问该函数中的numpy数组以及轴和画布,但这可以工作:
import numpy as np
from Tkinter import *
from ttk import *
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
def on_key_event(event):
print('you pressed %s'%event.key)
key_press_handler(event, canvas, toolbar)
def mOpen():
global t
global a
global canvas_3
var = IntVar()
slider_1 = Scale(mGui,orient=HORIZONTAL,length = 100,from_=0,to=9, variable=var, command=updateScale)
slider_1.place(x = 765,y=390)
t = np.random.random_sample(100000).reshape(100,100,10)
f = Figure(figsize=(5,4),dpi=100)
a = f.add_subplot(111)
a.imshow(t[:,:,var.get()])
print var.get()
canvas_3 = FigureCanvasTkAgg(f,master = mGui)
canvas_3.show()
canvas_3.get_tk_widget().place(x=5,y=5)
toolbar_3 = NavigationToolbar2TkAgg( canvas_3, mGui )
toolbar_3.update()
toolbar_3.place(x=10,y=15)
canvas_3._tkcanvas.place(x=7,y=7)
canvas_3.mpl_connect('key_press_event', on_key_event)
def updateScale(var):
print "scale is now %s" % (var)
a.imshow(t[:,:,int(float(var))])
canvas_3.show()
mGui = Tk()
mOpen()
mGui.geometry('900x900+300+10')
mGui.title('Plot')
mGui.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.