【发布时间】:2018-12-14 16:07:39
【问题描述】:
我正在尝试使用 Python 和 Tkinter 创建我的第一个 GUI。我想要一个根据窗口大小调整大小的背景图像,以及背景顶部的两个标签,两者都放置在窗口的中间。这两个标签是“全名”和“教育”,如下面的代码所示。
目前,我正在使用 pack() 方法,并且一直在使用来自here 的窗口大小调整代码。
我的问题是:如何让标签与背景图像重叠(也是我代码中的标签)?使用我当前的代码,背景图像似乎位于框架和标签的顶部。
附件是我正在寻找的输出/GUI 的图片,但我希望我的图片位于背景中。
#Resize using label
from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk
root = Tk()
root.title("Title")
root.geometry('600x600')
def resize_image(event):
new_width = event.width
new_height = event.height
image = copy_of_image.resize((new_width, new_height))
photo = ImageTk.PhotoImage(image)
label.config(image = photo)
label.image = photo #avoid garbage collection
#Background image
image = Image.open("filepath.jpg")
copy_of_image = image.copy()
photo = ImageTk.PhotoImage(image)
label = Label(root, image = photo)
label.bind('<Configure>', resize_image)
label.place(x=0, y=0, relwidth=1, relheight=1)
label.pack(fill=BOTH, expand = YES)
label.lower()
frame = Frame(root, width=600, height=600, relief='raised', borderwidth=2)
frame.pack(fill="both", expand=True)
frame.pack_propagate(False)
#Top Frame
top_frame = Frame(frame,width=600, height=350)
top_frame.pack(side = TOP)
#Various Labels
Label(frame, text = 'Full Name', width = 8).pack()
Label(frame, text = 'Education', width = 8).pack()
root.mainloop()
【问题讨论】:
-
嗨,Kelsey,欢迎来到 StackOverflow!您发布了一个写得很好的问题,但我认为它本质上与question 提出的问题相同,只是您问的是标签而不是按钮。通过将图像放在 TkInter Canvas 对象上来回答这个问题。希望对您有所帮助!
-
@gary,谢谢你的链接,但问题似乎不太一样。我认为我遇到问题的地方是调整窗口大小。无论如何,当我将背景图像设为 Canvas 而不是 Label 时,我得到的结果完全相同。它没有出现在我的标签后面。
标签: python tkinter background-image