Apr-27-2020, 08:03 AM
Hi,
I am doing a project on Tkinter, and I am facing 2 problems :
1- When I define a class and insert an image, it doesn't work. But, when I just define the frame, not with class, it works very well. Btw, it isn't a problem with where the image is saved.
2 - And here is a question now. I have a menu page and I want to make that if one button is clicked, it shows a new widget several frames later. I tried something that you can see in my code but it isn't working.
It would be awesome if you can help me.
Thanks a lot and have a nice day
Here is the code :
For question 1 :
The images aren't working but the text and button is working :
I am doing a project on Tkinter, and I am facing 2 problems :
1- When I define a class and insert an image, it doesn't work. But, when I just define the frame, not with class, it works very well. Btw, it isn't a problem with where the image is saved.
2 - And here is a question now. I have a menu page and I want to make that if one button is clicked, it shows a new widget several frames later. I tried something that you can see in my code but it isn't working.
It would be awesome if you can help me.
Thanks a lot and have a nice day
Here is the code :
For question 1 :
The images aren't working but the text and button is working :
class Brittachoix(Frame): def __init__(self,master): Frame.__init__(self,master) tableau = PhotoImage(file="tableau.png").zoom(4) Canvasbritta = Canvas(self, width=largeur, height=hauteur, bg="#FFFFFF") TABLEAU = Canvasbritta.create_image(540,340, image=tableau) txt = Canvasbritta.create_text(540,570,text="Bonjour", font="Arial 28 italic", fill="red") Button(self, text='Femme suivante', command=lambda: master.switch_frame(Shirleychoix)).pack() Canvasbritta.pack() self.pack()But when I put it out of the class, it is working !
BittaPerry = Frame(bvfenetre, bg="#FFFFFF") largeur = 1080 hauteur = 680 tableau = PhotoImage(file="tableau.png").zoom(4) Canvasbritta = Canvas(BittaPerry, width=largeur, height=hauteur, bg="#FFFFFF") TABLEAU = Canvasbritta.create_image(540,340, image=tableau) txt = Canvasbritta.create_text(540,570,text="Britta Perry", font="Arial 28 italic", fill="red") Canvasbritta.pack() BittaPerry.pack(expand=YES)2 - That is what I tried to do but it isn't working :
class Anniechoix(Frame): def __init__(self,master): Frame.__init__(self,master) Canvannie = Canvas(self, width=largeur, height=hauteur, bg="#FFFFFF") # TABLEAU = Canvannie.create_image(540,340, image=tableau) txt = Canvannie.create_text(540,570,text=nom[6], font="Arial 28 italic", fill="red") if i==1: Suivant = Button(self, text='Personnage suivant', command=lambda:master.switch_frame(Jeffchoix)) Suivant.place(x=960,y=600) self.pack()And previously, in the functino to switch to Anniechoix, I said destroy the previous, open the new one and i = 1 :
class SampleApp(Tk): def __init__(self): Tk.__init__(self) self._frame = None self.switch_frame(Bienvenue) def switch_frame(self, frame_class): new_frame = frame_class(self) if self._frame is not None : self._frame.destroy() self._frame = new_frame self._frame.pack() i = 1