在活动中将信息从孩子传递给父母

时间:2016-06-24 17:33:42

标签: python matplotlib tkinter

我创建了一个自定义matplotlib工具栏,我正在处理与自定义工具栏按钮相关的功能。其中一个按钮功能将(最终)返回一个列表位置,该列表位置最能代表用户从绘图中选择的位置。我在脑海中做这项工作有点困难,所以我做了一个简单的例子(试图避免使用全局变量),当按下工具栏按钮时,更新与工具栏无关的标签。

class TrackPlotToolbar(NavigationToolbar2TkAgg):

    toolitems = [t for t in NavigationToolbar2TkAgg.toolitems if
        t[0] in ('Home', 'Pan', 'Zoom', 'Save')]
    toolitems.append(('Trace', 'Trace Track Position', 'Trace', 'Trace_old'))

    def __init__(self, plotCanvas, frame):
        self.TraceListOld = []
        self.TraceListNew = []
        NavigationToolbar2TkAgg.__init__(self, plotCanvas, frame)

    def set_message(self, msg):
        pass

    def Trace_old(self):
        gui.infoLabel.text = "abrakadabra"
        gui.infoLabel.update()
        return 1

class gui(Frame):

        def __init__(self, parent):
            Frame.__init__(self, parent)
            self.grid()
            self.parent = parent
            self.infoLabel = Label(master = self, text = 'magic')
            self.initUI()


        def initUI(self):
            TestPlot = FigureCanvasTkAgg(TestFig, self)
            TestPlot.get_tk_widget().grid(column = 0,\
            row = 0, columnspan = 3, rowspan = 5)    
            TestFrame = Frame(self)
            TestFrame.grid(column = 2, row =6, columnspan = 3)    
            shockToolbar = TrackPlotToolbar(TestPlot,TestFrame)
            shockToolbar.update()
            self.infoLabel.grid(column = 2, row = 7)


def main():
    root = Tk()
    app = gui(root)
    root.mainloop()  

if __name__ == '__main__':
    main()

我采取了错误的做法吗?是否可以查询与父类内部类相关的事件的新数据?

0 个答案:

没有答案