[英]Update plot matplotlib tkinter
我有以下代碼:
import tkinter as tk
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg)
from matplotlib.figure import Figure
root = tk.Tk()
figure = Figure()
figure_canvas = FigureCanvasTkAgg(figure,master=root)
axes = figure.add_subplot(1,1,1)
axes.plot([1,2,3],[1,2,3])
figure_to_pack_d1 = figure_canvas.get_tk_widget()
figure_to_pack_d1.pack(fill=tk.BOTH)
def plot_axes():
axes.clear()
axes.plot([1,2,3],[3,2,1])
tk.Button(root,command=plot_axes,text="Update plot").pack()
root.mainloop()
它應該使用 matplotlib plot 和一個按鈕(正確完成)生成一個簡單的 GUI。 當您按下按鈕時,plot 應該會發生變化。 當按鈕被按下時,似乎什么都沒有發生,但如果你強制更新 window(改變它的大小)它會正確更新。 有什么方法可以在按下按鈕后立即更新 plot? 我嘗試了一些方法,如root.update() 、 axes.update({}) 、 figure.canvas.flush_events() ...但它們都沒有奏效。
太感謝了!
我終於找到了自己的答案。 更新plot 的實際方法是使用 de 命令:
figure_canvas.draw()
因此,腳本如下所示:
import tkinter as tk
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg)
from matplotlib.figure import Figure
root = tk.Tk()
figure = Figure()
figure_canvas = FigureCanvasTkAgg(figure,master=root)
axes = figure.add_subplot(1,1,1)
axes.plot([1,2,3],[1,2,3])
figure_to_pack_d1 = figure_canvas.get_tk_widget()
figure_to_pack_d1.pack(fill=tk.BOTH)
def plot_axes():
axes.clear()
axes.plot([1,2,3],[3,2,1])
figure_canvas.draw()
tk.Button(root,command=plot_axes,text="Update plot").pack()
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.