Jan-07-2022, 11:53 AM
(This post was last modified: Jan-07-2022, 01:11 PM by Yoriz.
Edit Reason: Added prefix
)
Hi All,
I have the below code:
Regards
I have the below code:
from tkinter import * # imports all from tkinter
from tkinter import messagebox # imports messagebox
from PIL import ImageTk, Image #imports pillow for images
import random # imports random
menu_page=Tk() #creates the menu_page
menu_page.title("Enter Names") #titles the menu_page
menu_page.attributes("-fullscreen", True) #makes the menu_page fullscreen
menu_page.resizable(False,False) #stops resizing of the menu_page
image_open = Image.open("Z:\Finley\School\Sixth Form\CS\Projects\Connect 4\Images\main_background.gif") #change to where the picture is
image = ImageTk.PhotoImage(image_open)
bg = Label(image=image) #makes the label the image
bg.image = image
bg.place(x=-10, y=-10) #places the label in the background
title_label_photo = PhotoImage(file=r"Z:\Finley\School\Sixth Form\CS\Projects\Connect 4\Images\connect_4_title.png")
title_label = Label(menu_page, image=title_label_photo, bg='#E4D6B6') # label details
title_label.place(x=600, y=20) # places the label
label_1 = Label(menu_page, text="Player 1 Name:", font=("Comic Sans MS", "16"), bg="#E4D6B6") # label details
label_1.place(x=575, y=220) # places label
entry_1 = Entry(menu_page, width=40) # details for entry box
entry_1.place(x=745, y=230) # places entry box
label_2 = Label(menu_page, text="Player 2 Name:", font=("Comic Sans MS", "16"), bg="#E4D6B6") # details for label
label_2.place(x=575, y=290) # places label
entry_2 = Entry(menu_page, width=40) # details for entry box
entry_2.place(x=745, y=300) # places entry box
def exit_menu(): # function for when exit is pressed
menu_page.destroy() # closes menu page
exit_button_photo = PhotoImage(file=r"Z:\Finley\School\Sixth Form\CS\Projects\Connect 4\Images\exit_menu.png") # opens the image to be used
exit_button = Button(menu_page, image=exit_button_photo, command=exit_menu) # closes the login and opens menu
exit_button.place(x=1320, y=781) # places button
def toggle(): # function to change the colour and text of label next to the players
if p1_colour_label["text"] == "Red": # if the label has text red
p1_colour_label.config(text="Yellow", fg="#FFFE00") #switches colours
p2_colour_label.config(text="Red", fg="#FF0000") # switches colours
else: # if the abel has text yellow
p2_colour_label.config(text="Yellow", fg="#FFFE00") # switches colours
p1_colour_label.config(text="Red", fg="#FF0000") # switches colours
def start_play(): # function for when play is presses
player1_name = entry_1.get() # gets the string from entry box 1
player2_name = entry_2.get() # gets the string from entry box 2
if len(player1_name) == 0:
messagebox.showwarning("Missing Names", "One or more of the boxes hasnt been filled in, please correct this.")
elif len(player2_name) == 0:
messagebox.showwarning("Missing Names", "One or more of the boxes hasnt been filled in, please correct this.")
else:
random_num = random.randint(18, 25) # picks a random number
for i in range(random_num): # loops round a number of times set by the random number
menu_page.after(i*100, toggle) # after 100ms run toggle
if (random_num % 2) == 0: # checks if it is an even or odd number whcih tells me where red is on so we know who goes first
players_turn = "player_1" # sets players turn to player 1
else:
players_turn = "player_2" # sets players turn to player 2
play_button.lift() # brings the play button forward to show it
#############################################################################################################################
def play_game():
main_game = Toplevel()
main_game.title("Connect 4")
main_game.attributes("-fullscreen", True) #makes the menu_page fullscreen
main_game.resizable(False,False) #stops resizing
image_open_background = Image.open("Z:\Finley\School\Sixth Form\CS\Projects\Connect 4\Images\Connect_4_Background.gif") # opens the image
image_background = ImageTk.PhotoImage(image_open_background)
bg = Label(image=image_background) # sets the image to a label
bg.image = image_background # makes the background the image
bg.place(x=200, y=100) # positions the image in the background
#############################################################################################################################
submit_button_photo = PhotoImage(file=r"Z:\Finley\School\Sixth Form\CS\Projects\Connect 4\Images\submit_main.png") # opens the image to be used
submit_button = Button(menu_page, image=submit_button_photo, command=start_play) # closes the login and opens menu
submit_button.place(x=505, y=400) # places button
play_button_photo = PhotoImage(file=r"Z:\Finley\School\Sixth Form\CS\Projects\Connect 4\Images\play_main.png") # opens the image to be used
play_button = Button(menu_page, image=play_button_photo, command=play_game) # closes the login and opens menu
play_button.place(x=505, y=400) # places button
submit_button.lift()
p1_colour_label = Label(menu_page, text="Red", fg="#FF0000", bg="#E4D6B6", font=("Comic Sans MS", "16"))
p1_colour_label.place(x=1000, y=223)
p2_colour_label = Label(menu_page, text="Yellow", fg="#FFFE00", bg="#E4D6B6", font=("Comic Sans MS", "16"))
p2_colour_label.place(x=1000, y=293)
menu_page.mainloop()In the play_game function, I want it to open s new window titled connect 4 which it successfully does. But then I want it to display the image 'Connect_4_Background' on that toplevel window as the background image. However, when I run this, it puts the image in the background but on the menu_page instead of the main_game. How do I fix this and make the image the background of the Toplevel window instead?Regards
"Only Boring People Get Bored"
