[英]Using key_press_event to select a 'mode' for different types of pick_event
我一直在努力创建一个交互式情节选择器,其中有3个不同的pick_events。 这些pick_events每个都有一个计算。 我想按“ 1”,“ 2”或“ 3”,这将是对应的pick_event的一种模式,我希望它保持在该模式下,直到按下另一种模式为止。 到目前为止,我已经尝试了这段代码,但是我对OOP缺乏经验并尝试学习。
class MyClick(object):
def __init__(self):
def pick(self, event):
artist = event.artist
xmouse, ymouse = event.mouseevent.xdata, event.mouseevent.ydata
self.x, self.y = np.array(artist.get_xdata()),np.array(artist.get_ydata())
self.ind = event.ind
#self.maxind = self.y[self.ind].argsort()[-1:] #[::-1]
#axes.plot(x[ind[self.maxind]],y[ind[self.maxind]],'*')
#figure.canvas.draw()
def press(self, event):
sys.stdout.flush()
if event.key == '1':
# peak
self.maxind = self.y[self.ind].argsort()[-1:] #[::-1]
print(y[ind[self.maxind]])
elif event.key == '2':
# onset
print('onset')
elif event.key == '3':
# offset
print('offset')
else:
print('wrong key press')
if __name__ == "__main__":
figure = plt.figure()
axes = figure.add_subplot(1, 1, 1)
data_plot, = axes.plot(Frame, R_Fz_dn_bc , picker=5) #plot data
axes.autoscale(tight=True)
browser = MyClick()
cid = figure.canvas.mpl_connect('pick_event', browser.pick)
cid = figure.canvas.mpl_connect('key_press_event', browser.press)
plt.show()
我省略了一些无法处理的代码。 我尝试了3种不同的选择器功能,但还尝试了一种选择器功能以及每个按键事件功能中的计算。 任何帮助将是巨大的感谢。 我已经为此苦苦挣扎了好几个星期了。 我也在寻找一种方法来将点选入一个numpy数组中,以便以后可以进行其他计算。
谢谢!
PS:如果对此有先前的话题,我深表歉意。 我什么都没找到,所以如果有指向我的地方!
您可以使用press()
方法将最后一次按下的按键记录为MyClick
实例的属性,然后在pick()
方法中检查当前处于哪种模式并进行适当的计算:
class MyClick(object):
def __init__(self):
# initialize mode
self._mode = 1
def pick(self, event):
"""do some calculation depending on the last key pressed"""
if self._mode == 1:
# do something...
pass
elif self._mode == 2:
# do something different...
pass
elif self._mode == 3:
# do something else entirely...
pass
def press(self, event):
"""record last key pressed"""
if event.key == '1':
self._mode = 1
elif event.key == '2':
self._mode = 2
elif event.key == '3':
self._mode = 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.