![]() |
[Tkinter] Images in Toplevel() - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [Tkinter] Images in Toplevel() (/thread-32819.html) |
Images in Toplevel() - finndude - Mar-08-2021 Hi All, How do i add an image into a window in Tkinter when using toplevel. Ive tried with PIL and haven't got working results. RE: Images in Toplevel() - Larz60+ - Mar-08-2021 Show what you tried (code). RE: Images in Toplevel() - finndude - Mar-08-2021 (Mar-08-2021, 02:18 PM)Larz60+ Wrote: Show what you tried (code). Hi, This is the whole program. import tkinter as tk from tkinter import * import tkinter.font as font import random import time from PIL import ImageTk,Image from playsound import playsound window_4 = tk.Tk() window_4.title("Game") window_4.attributes("-fullscreen", True) random_num = random.randint(1, 9) random_num = 9 print(random_num) player_choice = 0 global lives lives = 3 def click_1(): global lives player_choice=1 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_1 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_1.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_2(): global lives player_choice=2 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_2 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_2.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_3(): global lives player_choice=3 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_3 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_3.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_4(): global lives player_choice=4 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_4 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_4.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_5(): global lives player_choice=5 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_5 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_5.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_6(): global lives player_choice=6 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_6 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_6.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_7(): global lives player_choice=7 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_7 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_7.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_8(): global lives player_choice=8 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_8 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_8.grid(row=7, column=2) window_4.after(3000, window_4.destroy) def click_9(): global lives player_choice = 9 if player_choice == random_num: label_instructions.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\CorrectAnswer.mp3") correct_label = tk.Label(text="Correct Guess - Well Done. The game will now terminate. Thank You Playing, We Hope To See You Again Soon!!!!") correct_label.grid(row=0, column=2) window_4.after(3000, window_4.destroy) trophy=tk.Toplevel(window_4) trophy.geometry("500x400") trophy.title("Congratulations") trophy_canvas = tk.Canvas(window_4, height=500, width=400) trophy_image = ImageTk.PhotoImage(Image.open("D:\Work\School\ComputerScience\Code\Other\trophy.png")) image2 = trophy_canvas.create_image(0, 0, anchor=NW, image=trophy_image) trophy_canvas.grid(row=0, column=0) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 1: heart_2 .grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") elif lives == 0: heart_1.grid_forget() playsound("D:\Work\School\ComputerScience\Code\Other\TkinterSounds\WrongAnswer.mp3") gameover_9 = tk.Label(text="GAME OVER, you have run out of your 3 lives! - Thanks for playing") gameover_9.grid(row=7, column=2) window_4.after(3000, window_4.destroy) label_instructions = tk.Label(text="The computer has chosen a number, your job is to correctly guess the number. You only have 3 tries, Good Luck!") label_instructions.grid(row=0, column = 2) myFont = font.Font(size=82) game_button_1 = tk.Button(text="1", height=1, width=7, command=click_1) game_button_1['font'] = myFont game_button_1.grid(row=1, column = 1) game_button_2 = tk.Button(text="2", height=1, width=7, command=click_2) game_button_2['font'] = myFont game_button_2.grid(row=1, column = 2) game_button_3 = tk.Button(text="3", height=1, width=7, command=click_3) game_button_3['font'] = myFont game_button_3.grid(row=1, column = 3) clear_label_1 = tk.Label(text=" ") clear_label_1.grid(row=2) game_button_4 = tk.Button(text="4", height=1, width=7, command=click_4) game_button_4['font'] = myFont game_button_4.grid(row=3, column = 1) game_button_5 = tk.Button(text="5", height=1, width=7, command=click_5) game_button_5['font'] = myFont game_button_5.grid(row=3, column = 2) game_button_6 = tk.Button(text="6", height=1, width=7, command=click_6) game_button_6['font'] = myFont game_button_6.grid(row=3, column = 3) clear_label_2 = tk.Label(text=" ") clear_label_2.grid(row=4) game_button_7 = tk.Button(text="7", height=1, width=7, command=click_7) game_button_7['font'] = myFont game_button_7.grid(row=5, column = 1) game_button_8 = tk.Button(text="8", height=1, width=7, command=click_8) game_button_8['font'] = myFont game_button_8.grid(row=5, column = 2) game_button_9 = tk.Button(text="9", height=1, width=7, command=click_9) game_button_9['font'] = myFont game_button_9.grid(row=5, column = 3) heart_1 = Canvas(window_4, width = 300, height = 300) heart_1.grid(row=7, column=1) img_1 = ImageTk.PhotoImage(Image.open("D:\Work\School\ComputerScience\Code\Other\pic_1.png")) heart_1.create_image(20, 20, anchor=NW, image=img_1) heart_2 = Canvas(window_4, width = 300, height = 300) heart_2.grid(row=7, column=2) img_2 = ImageTk.PhotoImage(Image.open("D:\Work\School\ComputerScience\Code\Other\pic_2.png")) heart_2.create_image(20, 20, anchor=NW, image=img_2) heart_3 = Canvas(window_4, width = 300, height = 300) heart_3.grid(row=7, column=3) img_3 = ImageTk.PhotoImage(Image.open("D:\Work\School\ComputerScience\Code\Other\pic_3.png")) heart_3.create_image(20, 20, anchor=NW, image=img_3) window_4.mainloop()And I get this error.
RE: Images in Toplevel() - deanhystad - Mar-08-2021 Toplevel works the same as the window returned by Tk(). I cannot run your program because it references several files I don't have. I don't want to change every reference (far more than are needed) just so I can test. Your code is 322 lines long! You could make a working program that demonstrates your problem (placing image in a Toplevel window) in a program under 20 lines long. If you want help, you have to do a little work. I chopped your program down to 12 lines and the source of the problem was immediately obvious. I suggest you take this opportunity to prune your 322 line program into a more appropriately sized example to post. While doing this I am sure you will see the problem too. You might also consider testing new language features in small programs before including them in your main work. It is usually easier and faster to write a short test program than add code to a large program. Debugging and testing is certainly much faster. Once you have a working example it will be easier for you to integrate the feature with your existing code. Not only do you have a working example to compare against, but you also have a better understanding of how the feature works. A side benefit is you also have a short example you can post if you run into problems. RE: Images in Toplevel() - finndude - Mar-09-2021 (Mar-08-2021, 04:39 PM)deanhystad Wrote: Toplevel works the same as the window returned by Tk(). This code here is part of another program that will be later implemented into. |