Bast38
Bast38

Reputation: 93

MatPlotLib Graph in a tkinter frame stays completly white

The graph supossed to be displayed in the canvas does not appear

import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTk
import numpy as np

root = tk.Tk()
root.title("Graphique Matplotlib dans Tkinter")
root.geometry("750x500")

t = np.arange(0, 3, 0.01)
fig = plt.figure(figsize=(8, 8))
fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))
canvas = FigureCanvasTk(fig, master=root)
canvas.get_tk_widget().place(x=0,y=0)

button = tk.Button(root, text="Cliquez-moi !")
button.pack()

root.mainloop()

I display a canvas in a window, a button, but the graph stays invisible, despite it being created when I write plt.show() to test.

Upvotes: 0

Views: 48

Answers (1)

Bast38
Bast38

Reputation: 93

I have that, but impossible to update the toolbar, it does not work on the new graphs created after clicking on the button

import random
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk

root = tk.Tk()
canvas = None
toolbar = None

def cplot():
    global canvas, toolbar

    if canvas:
        plt.close()
        canvas.get_tk_widget().pack_forget()

    xCord = [random.randint(0, 10) for i in range(5)]
    yCord = [random.randint(0, 10) for i in range(5)]

    fig, ax = plt.subplots()
    plt.plot(xCord, yCord)

    canvas = FigureCanvasTkAgg(fig, master=root)
    canvas.draw()
    canvas.get_tk_widget().pack()

    if not toolbar:
        toolbar = NavigationToolbar2Tk(canvas, root)
        canvas.get_tk_widget().pack()
    else:
        toolbar.update()

bouton = tk.Button(root, text="Changer", command=cplot)
bouton.pack()

cplot()

root.mainloop()

Upvotes: 0

Related Questions