ali*_*i_m 7 python events numpy matplotlib event-handling
有没有办法让matplotlib阻止代码执行等待matplotlib.backend_bases.Event?
按照这些例子,我一直在研究matplotlib图中交互式绘制线条和多边形的一些类.我真正想做的是阻止执行,直到我完成编辑多边形,然后获得顶点的最终位置 - 如果你熟悉MATLAB,我基本上试图复制position = wait(roihandle)语法,例如这里.
我想我可以在按键发生时设置我的交互式多边形对象的一些类属性,然后在我的脚本中反复轮询该对象以查看事件是否已经发生,但我希望有更好的方法.
嗯,这比我想象的要容易!对于那些感兴趣的人,我找到了使用figure.canvas.start_event_loop()和的解决方案figure.canvas.stop_event_loop().
这是一个简单的例子:
from matplotlib import pyplot as plt
class FigEventLoopDemo(object):
def __init__(self):
self.fig, self.ax = plt.subplots(1, 1, num='Event loop demo')
self.clickme = self.ax.text(0.5, 0.5, 'click me',
ha='center', va='center',
color='r', fontsize=20, picker=10)
# add a callback that triggers when the text is clicked
self.cid = self.fig.canvas.mpl_connect('pick_event', self.on_pick)
# start a blocking event loop
print("entering a blocking loop")
self.fig.canvas.start_event_loop(timeout=-1)
def on_pick(self, event):
if event.artist is self.clickme:
# exit the blocking event loop
self.fig.canvas.stop_event_loop()
print("now we're unblocked")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |