通过按下按钮来校准“绘图”功能,从而在tkinter画布上绘图

时间:2019-11-26 17:51:11

标签: python canvas tkinter

我一般不熟悉Python或编程,因此请原谅此问题。我知道类似的事情在此之前已经提出了好几次,但是我没有完全理解答案,也无法解决我的问题。 我的问题与我想用tkinter构建的GUI有关,我想在其中创建一个画布来绘制一些数据(数据在我的GUI类之外定义)。我希望在打开GUI时已经显示画布,但是,仅应在按下按钮并调用函数后才能绘制我的数据。

我该怎么做?当我在“ GUI”类之外手动调用“ plot_data”函数时,可以绘制日期,但是如果我通过按按钮调用功能,则不会更新画布。

我想我的问题可能与类或tkinter模块的一般理解(或更好的理解)有关。对于所有尽可能简单(不那么有效)的解决方案,我将不胜感激。

预先感谢

塞巴斯蒂安

这是我的(简化的)代码,主要关注主要问题:

import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk


A = [1,2,3,4,5,6,7]  #### in the fulll code I would have a fuction to open txt files here
B = [1,2,2,3,4,4,5]  ####                              ""

def plot_data():
    RE_GUI.ax1.plot(A,B)

class GUI:

    def __init__(self, master):
        self.master = master
        master.title("data analyser") 
        master.geometry("1200x800")
        master.configure(background='lightblue')

        self.plot = Button(master, text = "plot data", fg = "black", height = 2, width = 20, command = plot_data).place(x=10, y=50) #button to plot the data, which does not work

        self.fig, self.ax1 = plt.subplots(figsize=(11,7)) 
        self.fig.set_facecolor('lightblue')
        self.ax1.set_xlabel('Time [s]')
        self.ax1.set_ylabel('FID [mV]')
        self.ax2 = self.ax1.twinx()  
        self.ax2.set_ylabel('Temperature [°C]')

        self.canvas = FigureCanvasTkAgg(self.fig)
        self.canvas.get_tk_widget().place(x=400, y=40)

root = Tk()
RE_GUI = GUI(root)
#RE_GUI.ax1.plot(A,B)  # this works to plot something on the canvas
root.mainloop()

0 个答案:

没有答案