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
