【问题标题】:Placing image over an image with buttons用按钮将图像放在图像上
【发布时间】:2017-09-06 15:46:30
【问题描述】:

我目前有一个带有背景图像和顶部按钮的画布。我正在尝试获取它,以便在单击某个按钮时,将在背景图像和按钮的顶部放置一个新图像。我现在拥有的是这样的:

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()

当我运行它时,背景图像和按钮都出现了,但是当我点击按钮时,什么也没有发生。

提前感谢您的帮助!

【问题讨论】:

    标签: button tkinter background-image python-3.6 tkinter-canvas


    【解决方案1】:

    您正在强制窗口为特定大小。然后,您使用pack 而不使用任何选项,这意味着新画布被打包到可用空间的顶部。这意味着它被包装在另一个画布下方,这意味着它不可见,因为第一个画布是窗口高度的两倍。

    有许多解决方案,所有解决方案都取决于您想要发生的事情。一方面,您可以简单地通过添加新图像来重新使用现有的画布,而不是创建新的画布。或者,您可以先使用place_forget 隐藏旧画布,然后再使用新画布。或者,您可以使用gridplace 确保将两个画布放在窗口的同一位置。

    【讨论】:

    • 我明白了,谢谢你的帮助。我想要做的基本上是当我按下按钮时出现一个“新屏幕”。我希望能够在其上放置按钮并返回到原来的按钮。你对我应该怎么做有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多