文本输入小部件窃取了主图中的焦点

时间:2019-05-13 10:26:23

标签: python matplotlib matplotlib-widget

我正在尝试使用Matplotlib显示带有一些小部件的绘图。这些小部件应只允许用户输入拟合的起点和终点。下面的代码有效,但是,当我单击小部件以输入数据时,它会从主图中窃取焦点,这意味着缩放,平移等工具在该图中不再起作用。此外,发生这种情况时,左下角显示的坐标将成为小部件内部的 ,这意味着它们在悬停绘图时消失,而在悬停小部件时重新出现。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox

class fit_parameter :

    val = 0

    def __init__(self, start_value):
        self.val = start_value

    def change(self, new_value):
        self.val = float(new_value)

def fit_to_zero(x_axis, y_axis, color, y_label) :

    plt.clf()
    plt.semilogx(x_axis, y_axis, linewidth=0.5, marker="o", markersize=1, color=color)
    plt.xlabel(r'$y \,\, [keV \, / \, \mu m]$')
    plt.ylabel(y_label)
    plt.title("Linear interval selection")

    print("Write the start and end point of the linear interval")

    fit_start, fit_end = fit_parameter(0.1), fit_parameter(0.4)

    axbox1 = plt.axes([0.65, 0.82, 0.2, 0.04])  
    text_box1 = TextBox(axbox1, 'start ', initial="0.1")      
    text_box1.on_submit(fit_start.change)

    axbox2 = plt.axes([0.65, 0.76, 0.2, 0.04])
    text_box2 = TextBox(axbox2, 'end ', initial="0.4")    
    text_box2.on_submit(fit_end.change)

    plt.show()

#...

这是问题的图片:

Image

我已经使用Pyhton 3在Windows 10和Ubuntu 18.04上对此进行了测试。

0 个答案:

没有答案