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().