我想调试程序,并且想通过停止mainloop而不关闭窗口来冻结窗口。
我尝试使用quit()
和destroy()
,但是两者都只是关闭了窗口。
我的部分代码的小例子:
from tkinter import Tk, Canvas
root=Tk()
root.bind('<Space>', lambda e: '<------what to put here')
我可以在不总是关闭窗口的情况下关闭mainloop吗,以便它冻结并可以仔细查看。谢谢
答案 0 :(得分:0)
quit
不会破坏该窗口。但是,如果没有代码来阻止程序在mainloop
返回后停止,则可能会导致程序停止。
如果您要冻结的目的只是为了调试目的,则无需停止mainloop
。最简单的方法是启动pdb调试器,它会提示您并阻止mainloop处理事件,直到退出pdb。
def pause(event=None):
import pdb
pdb.set_trace()
root.bind('<Space>', pause)
当然,您不必在这里使用pdb
-任何不返回的函数都可以使用。例如,您可以呼叫input
或read
。 pdb
之所以方便,是因为它可以检查变量,运行其他代码或一次单步执行程序。
如果您确实想“关闭mainloop”,请调用quit
方法。从字面上看这就是它的作用-它告诉mainloop
退出。您有责任在mainloop
返回之后添加代码以防止窗口关闭。