@Zaphkiel02

Не отображается окно tkinter при выполнение функции, из-за чего?

Пишу программу пранк для друга, наткнулся на ошибку при выполнение функции с блокировкой мыши. Перестало появляться окно самой программы. Если не выполнять функцию, все работает. Думаю дело в работе tkinter и его основах работы. Прошу прошения если код оформлен не правильно, я только учусь.
screen = Tk()
screen.title('Хоп ты попал в гендзюцу!')
screen.attributes("-fullscreen", True)
screen.configure(background="#0079d9")
pyautogui.FAILSAFE = False

def block_mouse():
    pyautogui.click(900, 700)
    pyautogui.move(900, 700)
    screen.protocol("WM_DELETE_WINDOW", block_mouse())
    screen.update()


# верстаем наш интерфейс

field = Entry(screen, fg="green", justify=CENTER)
field.place(width=150, height=50, x=900, y=700)
smile = Label(screen, text=":)", font=("Ebrima", 150), fg="#f4ffff", bg="#0079d9")
smile.place(x=400, y=80)
text0 = Label(screen, text="Ваша система заблокирована!", font=("Ebrima", 25), fg="#f4ffff", bg="#0079d9")
text0.place(x=400, y=370)
text1 = Label(screen, text="Для снятия блокировки посмотрите всего Ван-Писа", font=("Ebrima", 25), fg="#f4ffff", bg="#0079d9")
text1.place(x=400, y=420)
text2 = Label(screen, text="Или переведите 45 рублей на абсолютно не запоминающийся номер телефона **************", font=("Ebrima", 25), fg="#f4ffff", bg="#0079d9")
text2.place(x=400, y=470)
text3 = Label(screen, text="Занять деньги можно по номеру телефона 8 800 35 5 555 или ************", font=("Ebrima", 25), fg="#f4ffff", bg="#0079d9")
text3.place(x=400, y=520)
text4 = Label(screen, text="Если вам показались эти номера знакомыми то ключевое слово здесь показались", font=("Ebrima", 25), fg="#f4ffff", bg="#0079d9")
text4.place(x=400, y=570)
text_field = Label(screen, text="Введите пароль:", font=("Ebrima", 25), fg="#f4ffff", bg="#0079d9")
text_field.place(x=830, y=630)

block_mouse()
screen.mainloop()
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Потому что ты не понимаешь разницу между передачей ссылки на функцию и вызовом функции.
screen.protocol("WM_DELETE_WINDOW", block_mouse())
Ты пытаешься задать в качестве обработчика результат вызова функции block_mouse(), а не саму функцию.
А поскольку это происходит в block_mouse(), то программа уходит в рекурсию.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы