我正在使用 python 的 matplotlib 来绘制图形。

我想绘制一个超时的图形,比如 3 秒,然后窗口将关闭以在代码上移动。

我知道 pyplot.show() 会创建一个无限超时的阻塞窗口; pyplot.show(block=False)pyplot.draw() 将使窗口非阻塞。但我想要的是让代码阻塞几秒钟。

我想出了一个想法,我可能会使用事件处理程序或其他东西,但仍然不清楚如何解决这个问题。有没有简单优雅的解决方案?

假设我的代码如下:

绘制.py:

import matplotlib.pyplot as plt

#Draw something
plt.show() #Block or not?

最佳答案

这是一个简单的示例,我创建了一个计时器来设置超时并在计时器的回调函数中关闭窗口 plot.close()。在 plot.show() 之前启动计时器,三秒后计时器调用 close_event(),然后继续执行其余代码。

import matplotlib.pyplot as plt

def close_event():
    plt.close() #timer calls this function after 3 seconds and closes the window

fig = plt.figure()
timer = fig.canvas.new_timer(interval = 3000) #creating a timer object and setting an interval of 3000 milliseconds
timer.add_callback(close_event)

plt.plot([1,2,3,4])
plt.ylabel('some numbers')

timer.start()
plt.show()
print "Am doing something else"

希望这是有帮助的。

关于python - 如何在 matplotlib 中为 pyplot.show() 设置超时?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30364770/

10-13 05:47