在Matplotlib地物打开的情况下继续脚本

acruukt9  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(188)

我有一个在循环中更新的matplotlib图形。我希望窗口在循环结束时保持打开,脚本继续。
下面是一个小例子:

import tkinter
import matplotlib as mpl
mpl.use('TKAgg', force=True)
import matplotlib.pyplot as plt
import random

def main():
  showFigure()
  print("This is printed before the figure is closed.")

def showFigure():
  x, y = [], []
  plt.ion()
  fig = plt.figure()

  for i in range(0, 100):
    x.append(i)
    y.append(random.randint(0, 10))
    plt.plot(x, y, 'r-')

    fig.canvas.draw()
    fig.canvas.flush_events()
  

if __name__ == '__main__':
  main()

在那个例子中,我希望在循环结束时窗口保持打开,并且打印“This is printed before the figure is closed.”(这意味着脚本确实继续了)。
我已经尝试plt.show在showFigure()函数的末尾使用block选项添加www.example.com(),但它没有达到我想要的效果。

  • 使用plt.show(block=True):Figure保持打开状态,但只有关闭窗口脚本才会继续。
  • 使用plt.show(block=False):图形在循环结束时自动关闭。与plt.show()相同。
bwitn5fc

bwitn5fc1#

如果我理解正确的话,只需在main函数的末尾添加plt.show(block=True)就可以完成这项工作。

# [...] 

def main():
  showFigure()
  print("This is printed before the figure is closed.")
  plt.show(block=True)

# [...]

图显示、更新并停留在屏幕上-然后执行print指令,脚本保持运行(等待),而matplotlib图未关闭。

相关问题