如何访问点击动态创建的matplotlib canvas?
How to access clicked dynamically created matplotlib canvas?
我有 3 个 QVBoxLayout 在 QHBoxLayout 中每个包含 3 个图(总共 9 个),如下所示:
我的目标是在点击 he/she 时获取哪个 canvas 被点击。我正在以下动态创建图:
def create_random_figures():
for i in range(3):
x, y_leak, y_lin, y_sat = get_points_array(i)
canvas = FigureCanvas(Figure(figsize=(5, 3)))
ax = canvas.figure.subplots()
ax.plot(x, y_leak, '--rs', label='Y_leak')
ax.plot(x, y_lin, '-g*', label='Y_lin')
ax.plot(x, y_sat, ':bo', label='Y_sat')
ax.legend()
并连接到鼠标按钮点击事件。
canvas.mpl_connect("button_press_event", self.canvas_on_press)
self.vertical_layout_1.addWidget(canvas)
通过这种方式,我可以从点击的 canvas 中获取一些信息(x,y 坐标等),这些信息在 中有明确说明,但我找不到如何学习canvas 被点击。
如果要检测点击了哪个canvas,那么最好的选择是通过继承实现逻辑。
class Canvas(FigureCanvas):
def __init__(self, parent=None):
super().__init__(Figure(figsize=(5, 3)))
self.setParent(parent)
self.mpl_connect("button_press_event", self.on_press)
def on_press(self, event):
print(self, event)
x, y_leak, y_lin, y_sat = get_points_array(i)
canvas = Canvas()
ax = canvas.figure.subplots()
然后不再需要识别 canvas 因为 self
是 canvas.
我有 3 个 QVBoxLayout 在 QHBoxLayout 中每个包含 3 个图(总共 9 个),如下所示:
我的目标是在点击 he/she 时获取哪个 canvas 被点击。我正在以下动态创建图:
def create_random_figures():
for i in range(3):
x, y_leak, y_lin, y_sat = get_points_array(i)
canvas = FigureCanvas(Figure(figsize=(5, 3)))
ax = canvas.figure.subplots()
ax.plot(x, y_leak, '--rs', label='Y_leak')
ax.plot(x, y_lin, '-g*', label='Y_lin')
ax.plot(x, y_sat, ':bo', label='Y_sat')
ax.legend()
并连接到鼠标按钮点击事件。
canvas.mpl_connect("button_press_event", self.canvas_on_press)
self.vertical_layout_1.addWidget(canvas)
通过这种方式,我可以从点击的 canvas 中获取一些信息(x,y 坐标等),这些信息在
如果要检测点击了哪个canvas,那么最好的选择是通过继承实现逻辑。
class Canvas(FigureCanvas):
def __init__(self, parent=None):
super().__init__(Figure(figsize=(5, 3)))
self.setParent(parent)
self.mpl_connect("button_press_event", self.on_press)
def on_press(self, event):
print(self, event)
x, y_leak, y_lin, y_sat = get_points_array(i)
canvas = Canvas()
ax = canvas.figure.subplots()
然后不再需要识别 canvas 因为 self
是 canvas.