1

自从我开始使用 python 以来,我一直在使用 matplotlib 时遇到一些问题。当我使用交互模式时,我必须运行 ipython --pylab --wthread 来获取绘图(如果我不使用 --wthread 命令,它不会绘制任何东西)。到目前为止,这还不是问题。

现在,我想:

  1. 输入一个循环
  2. 策划一些事情。这个情节是一个有两个子情节的大情节。
  3. 之后,显示一个带有easygui的按钮面板,让用户根据他在情节上看到的内容来决定
  4. 关闭情节
  5. 重复要在我的列表中绘制的每一件事。

我现在发现了几个困难:

1)如果我尝试使用 run script.py 命令以交互方式运行脚本,那么它不会绘制任何东西,而是直接跳转到按钮面板的东西。但是,如果我停止脚本,情节就会出现。我很确定正在发生的事情是“运行”命令在使用 for 循环完成脚本之前不会显示绘图。但我需要这些图出现在按钮之前。

2)经过一些尝试,我发现这段代码可以工作(出于某种神秘的原因……)。我尝试了其他方法,但删除任何 show() 或 draw() 命令只会使脚本不起作用

fig=plt.figure(figsize=(16,8))

plt.show()

ax1=fig.add_subplot(121)

ax2.things...

ax2=fig.add_subplot(122)

ax2.things

plt.draw()

plt.show()

plt.draw()

showthebuttonsthing...

即使这是有效的,matplotlib 似乎也不能很好地处理循环,并且在 5 秒内没有按下任何按钮只是等待之后,我的 matplotlib 窗口变灰了。这可能听起来很愚蠢,但颜色对于我希望用户做出的决定很重要......

3)如果我在 ipython 之外运行 python 脚本,我找不到让 python 脚本显示情节的方法......

我想我的 matplotlib 配置确实有问题,但是找不到使这项工作正常进行的方法……有人可以帮我解决这个问题吗?

提前非常感谢!

4

1 回答 1

0

看起来您几乎已经完成了,但请尝试按以下顺序执行操作:

fig = plt.figure(figsize=(16,8))
ax = [fig.add_subplot(121),fig.add_subplot(122)]

ax[0].things
ax[1].things

plt.show()

#show the button panel

However, the best method may be to integrate the plot into your GUI. I am not familiar with EasyGUI, but it seems to be based on tk. This example should help you with embedding the figure into a tk window.

于 2012-10-14T16:54:37.770 回答