我试图解决的问题如下:我想迭代创建用户可以交互的新绘图(例如,单击子绘图以将答案标记为正确),以及一个从用户输入更新统计信息的绘图。让我们把前者叫做Plot A
,把后者叫做Plot B
具体而言:
Plot A
包含从给定输入生成的一组子批次,提示用户选择一个子批次Plot A
将在每次我们收到新的输入文件时创建,并在用户完成选择后由用户关闭,然后在Plot B
上更新其答案。我编写了一个事件处理程序并将其附加到Plot A
以记录鼠标单击李>Plot B
在第一次用户输入后显示,将保持打开状态,并且每当我们从Plot A
收到新的用户输入时,统计信息都将更新由于我正在执行的程序有几个类(PlotA
由一个类创建,而PlotB
由另一个类创建),因此我将用以下简单管道对其进行总结:
for new input X from folder:
plotA(X) # new plot is created for an input X, user clicks on subplots in plotA
update_plotB()
其中:
def plotA(X):
# do computation on X
fig, ax = plt.subplots(nrows..., ncols=..., figsize=(...))
...plotting stuff...
plt.show()
及
def update_plotB():
fig, ax = plt.subplots(num='plotB', ncols=..., nrows=..., figsize=...) # I set an ID for plotB
for row, col:
ax[row, col].plot(...) # update the statistics in each subplot
plt.show()
因此,我希望为每个新输入创建一个新的PlotA
,阻止程序,直到用户自己关闭绘图,然后用新答案更新/重新绘制PlotB
中的子绘图
到目前为止,我已经尝试了(在阅读了大量关于so的主题之后):
plt.ion()
我把plt.ion()
放在节目的开头。但是它一次显示了每个绘图,而没有阻止用户在PlotA
中输入程序(代码运行太快,程序在我看到任何绘图之前就结束了)
update_plotB()
plt.show(block=False)
这只工作了一次(也就是说,在第一次迭代中显示PlotB
而没有阻塞),但是在接下来的所有迭代中PlotB
阻塞-我觉得很奇怪,但不知道为什么
PlotB
阻塞执行直到我关闭它,然后在每次迭代中创建新的PlotB
我希望我已经解释清楚了。提前非常感谢
目前没有回答
相关问题 更多 >
编程相关推荐