gpt4 book ai didi

python - matplotlib:故意阻止代码执行等待 GUI 事件

转载 作者:太空狗 更新时间:2023-10-29 21:43:51 26 4
gpt4 key购买 nike

有什么方法可以让 matplotlib 阻止等待 matplotlib.backend_bases.Event 的代码执行?

我一直在研究一些在 matplotlib 图形中交互式绘制线条和多边形的类,遵循 these examples .我真正想做的是阻止执行,直到我完成对多边形的编辑,然后获取顶点的最终位置 - 如果您熟悉 MATLAB,我基本上是在尝试复制 position = wait(roihandle) 语法,例如 here .

我想我可以在发生按键时设置我的交互式多边形对象的一些类属性,然后在我的脚本中重复轮询该对象以查看事件是否已经发生,但我希望有更好的方法。

最佳答案

好吧,这比我想象的要容易!对于那些感兴趣的人,我找到了一个使用 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")

关于python - matplotlib:故意阻止代码执行等待 GUI 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com