Почему фон перекрывает другие элементы в 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 шт):
Извините, но написано до такой степени неаккуратно... Прочтите что-нибудь о менеджерах компоновки. Во-первых, не надо смешивать в одной форме grid() и place(). Во-вторых, параметры менеджера компоновки в обоих случаях надо указать аккуратно и корректно. Я в Вашем случае заменил как-то наугад place() на grid() и элементы материализовались. Кроме того, вот в этом: Label(text='Your password', fg = 'green').place()
тоже надо указать, что метка размешается в форме root.
Если прям уж такие проблемы будут самому исправить по моей наводке, пишите, перепишу как-то для Вас. Это основы Tkinter, школьные, самые разнесчастные учебники пестрят примерами.
P.S.Есть ещё и такое: root.state('zoomed') # Максимизируем окно
вместо танцев с координатами.
Картинка, кстати, не будет растягиваться сама в соответствии с текущим разрешением экрана монитора. Так что, на других на компах этот весь интерфейс будет выглядеть, мягко говоря, иначе.
Я уже молчу о том, что программу нельзя покинуть, отказавшись авторизоваться. Как говорится, "наше учреждение можно покинуть только вперёд ногами". :-))))))))))