I agree with the others. Make a simple running example, so we can test. I can't really understand what your problem is, but whenever you use destroy() in Tk, you need to know what it is really doing. In Tk, the MainLoop and the MainWindow are linked, so destrying the mainwindow almost always leads to glitches because the eventloop gets destroyed. Usually, if you need to cycle the same window over and over, make a single mainwindow, and withdraw it... that keeps the event loop running. Then popup new toplevel windows to cycle, preferably reusing them by withdrawing, rapacking and re-raising.