Фоновая картинка перекрывает все кнопки и надписи
Делаю приложение на tkinter и хочу поставить картинку в качестве фона и на нее все остальные кнопки и надписи. У меня что-то не получается и картинка перекрывает все остальное. Вот код ниже:
root = Tk()
root.geometry('1920x1080')
root.title('QuizOp')
root['bg'] = 'limegreen'
generalframe = Frame(master=root, bg='limegreen')
bgimage = ImageTk.PhotoImage(Image.open("stestimage.jpg"))
bglabel = Label(root, image=bgimage)
createquizbtn = Button(generalframe, bg='white', text='Создать викторину', font='Arial 17', command=createquiz)
proitiquizbtn = Button(generalframe, bg='white', text='Пройти викторину', font='Arial 17', command=proitiquiz)
sendquizbtn = Button(generalframe, bg='white', text='Отправить викторину', font='Arial 17', command=sendquiz)
deletequizbtn = Button(generalframe, bg='white', text='Удалить викторину', font='Arial 17', command=deletequiz)
settingsbtn = Button(generalframe, bg='white', text='Настройки', font='Arial 17', command=settingscmd)
bglabel.pack()
generalframe.pack()
createquizbtn.pack()
proitiquizbtn.pack()
sendquizbtn.pack()
deletequizbtn.pack()
settingsbtn.pack()
root.mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Похоже, z-order (порядок, в котором виджеты размещаются друг поверх друга) зависит от того, в каком порядке они созданы (но не от того, в каком порядке вызваны методы размещения place/pack/grid). Из-за того, что Label с картинкой создается после generalframe, Label размещается поверх этого фрейма.
В таком варианте должно работать:
from tkinter import *
from PIL import Image, ImageTk
root = Tk()
root.geometry('1920x1080')
root.title('QuizOp')
# Сначала создаем картинку в окне, потом уже фрейм,
# тогда фрейм будет размещаться поверх картинки
bgimage = ImageTk.PhotoImage(Image.open("stestimage.jpg"))
bglabel = Label(root, image=bgimage)
generalframe = Frame(master=root, bg='limegreen')
...
bglabel.place(x=0, y=0)
generalframe.pack()
...
