我一般不熟悉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()