Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Tkinter窗口打开时暂停Python?_Python_Loops_Tkinter_Pausing Execution - Fatal编程技术网

如何在Tkinter窗口打开时暂停Python?

如何在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

我正在编写一个有时会出错的程序。当它这样做时,会弹出一个Tkinter对话框,询问用户是否继续。这是一个更复杂的版本:

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解释器。里面很容易有一些古怪的东西。:)