簡體   English   中英

更新 plot matplotlib tkinter

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM