Почему фон перекрывает другие элементы в tkinter?

У меня есть такой код:

from tkinter import*
root = Tk()
x = root.winfo_screenwidth()
y = root.winfo_screenheight()
# Создаём фон
root.image = PhotoImage(file='fox.png')
bg = Label(root, image=root.image)
bg.grid(row=0, column=0)
def Q():
    pass
def C(arg):
    if password.get() == "4765879":
        exit()
root.protocol('WM_DELETE_WINDOW', Q)
root.attributes('-topmost', 1)
root.geometry(f"{x}x{y}")
root.overrideredirect(1)
# Теперь добовляем другие элементы
Label(text='Your password', fg = 'green').place()
password = Entry(root, font = 'Arial 25', bg='green')
password.place()
password.bind('<Return>', C)
root.mainloop()

Вроде-бы всё правильно, сначала создаём фон, а потом добавляем элементы на него. Но всё равно фон их перекрывает. Пожалуйста помогите найти ошибку?


Ответы (1 шт):

Автор решения: Fox Fox

Извините, но написано до такой степени неаккуратно... Прочтите что-нибудь о менеджерах компоновки. Во-первых, не надо смешивать в одной форме grid() и place(). Во-вторых, параметры менеджера компоновки в обоих случаях надо указать аккуратно и корректно. Я в Вашем случае заменил как-то наугад place() на grid() и элементы материализовались. Кроме того, вот в этом: Label(text='Your password', fg = 'green').place() тоже надо указать, что метка размешается в форме root. Если прям уж такие проблемы будут самому исправить по моей наводке, пишите, перепишу как-то для Вас. Это основы Tkinter, школьные, самые разнесчастные учебники пестрят примерами.

P.S.Есть ещё и такое: root.state('zoomed') # Максимизируем окно вместо танцев с координатами.

Картинка, кстати, не будет растягиваться сама в соответствии с текущим разрешением экрана монитора. Так что, на других на компах этот весь интерфейс будет выглядеть, мягко говоря, иначе.

Я уже молчу о том, что программу нельзя покинуть, отказавшись авторизоваться. Как говорится, "наше учреждение можно покинуть только вперёд ногами". :-))))))))))

→ Ссылка