Top.Mail.Ru
Ответы

Tkinter проблема с закрытием окон

Почему window3.destroy() Не видит окно window3, если оно уже открыто, destroy() видит все окна кроме window3, в чем проблема?

Могу кинуть код.

Дополнен
По дате
По рейтингу
Аватар пользователя
Мастер

1. ищите опечатку скорее всего.
2. destroy в данном контексте не может не видеть объект если он создан, т. к. он метод этого объекта. Если вызов завершается ошибкой, значит вы вызываете его для неизвестного объекта или у объекта этого метода нет.
В остальном без кода вам нужно обращаться к телепатам и гадалкам.

Аватар пользователя
Ученик

Да. Ошибка именно в том, что он пишет window3 не обнаружен. Но как оно может быть не обнаружено если оно открыто, я менял имена window3 на разные, он не видит именно это окно.

Аватар пользователя
Ученик

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

Аватар пользователя
Мастер

код сюда https://www.onlinegdb.com/
а в вопрос ссылку на него

Аватар пользователя
Мастер

Весь код

Аватар пользователя
Мастер

сейчас посмотрю

Аватар пользователя
Мастер

все просто: вы создаете в одной процедуре окно, открываете его и на нажатие кнопки вешаете как обработчик другую процедуру, но вы в нее не передаете это самое окно и она - процедура реакции не знает о window3 ничего и сделать с ним ничего не может о чем вам честно и сообщает. IDE кстати тоже сразу ругается еще до запуска.

Аватар пользователя
Мастер

вам нужно или увеличить область видимости переменной объекта окна нужного, либо передавать его как параметр и обращаться. к нему по имени переданного параметра.

Аватар пользователя
Мастер

Потому что window у вас глобальная переменная-объект, а переменная-объект window3, как и window2 у вас существует только в подпрограммах, где они создавались, и вне их программе неизвестны.
Что вы тупите, я же вам сказал - область видимости переменных. Если вам это ни о чем не говорит, то вам рано работать с графическим интерфейсом - учите основы.

Аватар пользователя
Мастер

1. в коде, который вы привели никакого window4 нет совсем.
2. то что у вас в голове окна как то связаны не означает что для программы они как то связаны.
Окна в питоне, как и все остальное - это объекты, у объекта есть поля (свойства) и методы, а еще у них, есть область видимости - область кода из которой к ним можно обратиться.

Аватар пользователя
Мастер

и, если я не ошибаюсь вы не для того используете destroy()
вот тут https://ru.stackoverflow.com/questions/215979/tkinter-как-создать-дочернее-окно-и-скрыть-родительское , я думаю, метод, который следует вам использовать вместо destroy().



Видео по теме