有没有办法在Python 2.65、Matplotlib 0.99中显示pyplot图形,而不会锁定其他内容?
我有一个带有Pmw GUI的程序,在Windows(64位Winpython)上运行Python 2.75和Matplotlib 1.3.1。每次绘制图形时(或每次向现有图形添加东西时),程序都会调用plt.show()。可以在允许用户继续使用GUI并操作图形的同时显示pyplot图形,没有任何东西会阻塞,这正是我想要的,因为我需要用户在决定下一步在GUI中做什么时查看绘图,并且为了进行比较而将几个图形放在一起。
现在,我需要在Python 2.65和Matplotlib 0.99的系统上使所有这些工作。现在的行为似乎是除非调用plt.show(),否则什么也看不见,然后它将阻止一切直到绘图窗口关闭。我尝试使用plt.draw()代替,但图形甚至都不会显示出来。更糟糕的是:一些绘制到现有图形中的例程永远没有机会执行,因为它们无法在显示图形时执行,当它们可以执行时,图形已经消失了。我不能等待最后的绘图操作,因为图表是逐渐建立的,向现有图表添加信息,用户需要能够看到。
我不允许更新matplotlib。如果我将它们作为“我的”软件包的一部分使用,我可以使用库的非二进制部分。
理想情况下,我正在寻找适用于我工作的两个环境的代码,但是在这一点上,我愿意做出妥协...
更新:我发现在相同的环境中运行的一些代码可以执行所有这些操作,我可以删除plt.show()调用,甚至在IDLE中运行它(根据matplotlib文档,在这些方面存在问题),它“只是工作”的 - 我无法找到两个代码处理任务方式的任何差异:两者都定义了一个figure.axes对象,将其传递给绘制它们的例程(使用plt.plot())并存储它们以供将来使用。
我还发现,我的当前代码将根据如何运行它而更改其行为:在Spyder的“常规”控制台或系统控制台中,一切都很好,但在Spyder的专用控制台中,第一个图会锁定界面
=>我开始认为这与Matplotlib版本无关,但不知道还有哪里可以看--是否有其他东西会基于启动方式更改Matplotlib的行为?
我有一个带有Pmw GUI的程序,在Windows(64位Winpython)上运行Python 2.75和Matplotlib 1.3.1。每次绘制图形时(或每次向现有图形添加东西时),程序都会调用plt.show()。可以在允许用户继续使用GUI并操作图形的同时显示pyplot图形,没有任何东西会阻塞,这正是我想要的,因为我需要用户在决定下一步在GUI中做什么时查看绘图,并且为了进行比较而将几个图形放在一起。
现在,我需要在Python 2.65和Matplotlib 0.99的系统上使所有这些工作。现在的行为似乎是除非调用plt.show(),否则什么也看不见,然后它将阻止一切直到绘图窗口关闭。我尝试使用plt.draw()代替,但图形甚至都不会显示出来。更糟糕的是:一些绘制到现有图形中的例程永远没有机会执行,因为它们无法在显示图形时执行,当它们可以执行时,图形已经消失了。我不能等待最后的绘图操作,因为图表是逐渐建立的,向现有图表添加信息,用户需要能够看到。
我不允许更新matplotlib。如果我将它们作为“我的”软件包的一部分使用,我可以使用库的非二进制部分。
理想情况下,我正在寻找适用于我工作的两个环境的代码,但是在这一点上,我愿意做出妥协...
更新:我发现在相同的环境中运行的一些代码可以执行所有这些操作,我可以删除plt.show()调用,甚至在IDLE中运行它(根据matplotlib文档,在这些方面存在问题),它“只是工作”的 - 我无法找到两个代码处理任务方式的任何差异:两者都定义了一个figure.axes对象,将其传递给绘制它们的例程(使用plt.plot())并存储它们以供将来使用。
我还发现,我的当前代码将根据如何运行它而更改其行为:在Spyder的“常规”控制台或系统控制台中,一切都很好,但在Spyder的专用控制台中,第一个图会锁定界面
=>我开始认为这与Matplotlib版本无关,但不知道还有哪里可以看--是否有其他东西会基于启动方式更改Matplotlib的行为?