Bonjour,
Je dispose de ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
from tkinter import *
import matplotlib.pyplot as plt
 
class MainWindow():
 
    def __init__(self, main):
 
        self.canvas = Canvas(main, width=1000, height=750)
        self.canvas.grid(row=0, column=0)
 
        # images
        self.my_images = []
        self.my_images.append(PhotoImage(file = "image0.png"))
        self.my_images.append(PhotoImage(file="image1.png"))
        self.my_images.append(PhotoImage(file="image2.png"))
 
        self.my_image_number = 2
 
        # set first image on canvas
        self.image_on_canvas = self.canvas.create_image(0, 0, anchor = NW, image = self.my_images[self.my_image_number])
 
        # button to change image
        self.button = Button(main, text="Change", command=self.onButton)
        self.button.grid(row=1, column=0)
 
        self.var = StringVar(main)
        self.var.set("test1")  # initial value
 
        self.option = OptionMenu(main, self.var, "test1", "test2")
        self.option.grid(row=2, column=0)
 
    def createDiagram(self,adu, vir, cri, mar, dru):
        # ...
 
    def onButton(self):
        if(self.var.get()=="test1"):
            self.createDiagram('5','5','5','5','5')
            self.my_images[2]=(PhotoImage(file="image2"))
            self.canvas.itemconfig(self.image_on_canvas, image=self.my_images[2])
        if(self.var.get()=="test2"):
            self.canvas.itemconfig(self.image_on_canvas, image=self.my_images[1])
            self.createDiagram('100','10','50','75','42')
 
 
root = Tk()
MainWindow(root)
root.mainloop()
La fonction createDiagram me crée juste un diagramme au format png sous le nom "image2.png". Seulement, quand la liste déroulante vaut "test1" et que j'appuie sur le bouton "Change", la nouvelle image2.png se crée bien mais la modification dans le canvas ne se fait pas, une erreur du type "Too early to create image" apparait. Je pense que ça vient de root=Tk(), mais je ne vois pas qu'est-ce que je dois modifier ?

Merci d'avance pour votre aide.