如何在Tkinter窗口打开时暂停Python?
我正在编写一个有时会出错的程序。当它这样做时,会弹出一个Tkinter对话框,询问用户是否继续。这是一个更复杂的版本:如何在Tkinter窗口打开时暂停Python?,python,loops,tkinter,pausing-execution,Python,Loops,Tkinter,Pausing Execution,我正在编写一个有时会出错的程序。当它这样做时,会弹出一个Tkinter对话框,询问用户是否继续。这是一个更复杂的版本: keep_going = False KeepGoingPrompt(keep_going) if not keep_going: return 提示将keep_going设置为True或将其保留为False。 问题是,KeepGoingPrompt打开时,代码似乎仍在继续。我尝试存储对提示符的引用,并添加一个类似 while prompt: time.slee
keep_going = False
KeepGoingPrompt(keep_going)
if not keep_going:
return
提示将keep_going
设置为True
或将其保留为False
。
问题是,KeepGoingPrompt
打开时,代码似乎仍在继续。我尝试存储对提示符的引用,并添加一个类似
while prompt:
time.sleep(1)
但是python被困在循环中并冻结。
有更好的方法吗
谢谢您可以使用tkMessageBox类弹出一个问题对话框,该对话框是模态的,在用户单击按钮之前不会返回。有关详细信息,请参阅。1)您是否在空闲状态下运行代码?它可能负责使对话不被阻塞,而实际上它应该被阻塞
2) 如果在空闲时间外运行没有帮助,请查找tkinter/dialogue选项,这些选项指定行为是阻塞还是非阻塞我尝试过,但无法确定它是否有效,因为它似乎导致了其他一些奇怪的错误。但这可能只是我代码中的其他地方出了问题(你能描述这些bug吗?它可能会给出一些关于它们是否与对话框调用相关的指示;因为tkMessageBox本质上是Windows MessageBox API调用的一个非常简单的包装器,我想说这不太可能是调用本身的问题。好吧,修复了我遇到的错误。但是现在有了一个新的(可能更简单?)第一:消息框被跳过了,和我原来的对话框一样。好的,按enter键提交评论。很高兴知道。无论如何,我修复了它。我没有存储tkMessageBox()的结果,而是使用了“if not tkMessageBox():return”,这似乎很有效。谢谢!不是空闲的,但我在一个实验程序中运行,里面有一个非标准的python解释器。里面很容易有一些古怪的东西。:)