0

현재 캔버스에 배경 이미지와 버튼이 있습니다. 특정 단추를 클릭하면 새 이미지가 배경 이미지와 단추 위에 놓 이도록하려고합니다. 내가 지금있는 것은 이것이다 :이 프로그램을 실행할 때버튼을 사용하여 이미지 위에 이미지 배치

import tkinter as tk 
from xlrd import * 
from PIL import Image, ImageTk 

#GLOBAL VARIABLES 

WIDTH = 720 
HEIGHT = 960 

#create window 
window = tk.Tk() 
window.title("NFL") 
window.geometry("960x720") 

#create canvas 
canvas = tk.Canvas(window, width = WIDTH*2, height = HEIGHT*2) 
canvas.pack() 

#use NFL logo as background 
nfl_logo_image = Image.open('nfl.jpg') 
nfl_logo_image = nfl_logo_image.resize((HEIGHT, WIDTH), Image.ANTIALIAS) 
nfl_logo = ImageTk.PhotoImage(nfl_logo_image) 
canvas.create_image(0, 0, image = nfl_logo, anchor = 'nw') 

#CAR button 
def press_car_button(): 
    canvas2 = tk.Canvas(window, width = WIDTH*2, height = HEIGHT*2) 
    canvas2.pack() 
    big_car_logo = Image.open('car.png') 
    big_car_logo = big_car_logo.resize((WIDTH, WIDTH), Image.ANTIALIAS) 
    big_car_image = ImageTk.PhotoImage(big_car_logo) 
    canvas2.create_image(0, 0, image = big_car_image, anchor = 'nw') 

car_logo = Image.open('car.png') 
car_logo = car_logo.resize((70,70), Image.ANTIALIAS) 
car_image = ImageTk.PhotoImage(car_logo) 
car_button = tk.Button(window, image = car_image, height = 70, width = 70, command = press_car_button) 
car_button_window = canvas.create_window(720, 195, anchor = 'nw', window = car_button) 

#run GUI 
window.mainloop() 

, 배경 이미지와 버튼을 모두 잘 올하지만이 버튼을 클릭하면 아무 일도 발생하지 않습니다.

미리 도움을 청하십시오!

답변

1

창을 특정 크기로 만듭니다. 그런 다음 pack을 옵션없이 사용하면 새 캔버스가 사용 가능한 공간 인 에 포장됩니다. 이는 다른 캔버스 아래에 꽉 차 있음을 의미합니다. 즉 첫 번째 캔버스가 창 높이의 두 배이기 때문에 보이지 않습니다.

모든 솔루션이 있으며, 모두 원하는대로 정확하게 수행해야합니다. 하나는 새 캔버스를 만드는 대신 새 이미지를 추가하여 기존 캔버스를 다시 사용할 수 있습니다. 또는 이전에 place_forget을 숨기고 새 캔버스를 사용할 수 있습니다. 또는 grid 또는 place을 사용하여 두 캔버스가 동일한 위치의 창에 표시되도록 할 수 있습니다.

+0

귀하의 도움에 감사드립니다. 내가하려는 것은 기본적으로 버튼을 누를 때 "새 화면"이 생기는 것입니다. 나는 그것에 버튼을 놓을 수 있고 원래의 것으로 돌아갈 수 있기를 원한다. 내가 어떻게 할 수 있는지에 대한 제안이 있니? – Matt

관련 문제