python tkinter 界面更新_python – 如何在Tkinter窗口中刷新matplotlib图?

这篇博客探讨了如何在Python的Tkinter GUI中刷新matplotlib图表。作者创建了一个应用程序,通过点击按钮导入数据并执行一系列操作,包括在同一个窗口内显示光谱数据。问题在于点击按钮后,图形未如预期显示。代码示例展示了如何初始化Tkinter窗口、添加按钮以及更新图表的方法。
摘要由CSDN通过智能技术生成

我想知道是否有人知道为什么下面的代码按下GUI上的按钮后没有显示带有一行的图形.我想创建一个程序,在通过单击按钮导入一组数据后执行一长串命令.这些命令之一是在同一窗口内的图形上显示光谱数据.这是我到目前为止:

# import modules that I'm using

import matplotlib

matplotlib.use('TKAgg')

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg

from matplotlib.figure import Figure

import matplotlib.pyplot as pltlib

import Tkinter

from Tkinter import *

import numpy as np

import scipy as sc

#import matplotlib.pyplot as pltlib

# lmfit is imported becuase parameters are allowed to depend on each other along with bounds, etc.

from lmfit import minimize, Parameters, Minimizer

#Make object for application

class App_Window(Tkinter.Tk):

def __init__(self,parent):

Tkinter.Tk.__init__(self,parent)

self.parent = parent

self.initialize()

def

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的例子,演示如何使用MatplotlibTkinter集成,实现一个简单的数据可视化应用程序。这个例子只是一个基础的应用程序,你可以根据自己的需求进行修改和扩展。 ```python import tkinter as tk from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure import Figure class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): # 创建一个按钮 self.plot_button = tk.Button(self) self.plot_button["text"] = "Plot Data" self.plot_button["command"] = self.plot_data self.plot_button.pack(side="top") # 创建一个 Matplotlib 的 Figure 对象 self.fig = Figure(figsize=(5, 4), dpi=100) # 在 Figure 对象添加一个 Axes 对象 self.ax = self.fig.add_subplot(111) # 在 Axes 对象绘制一条曲线 self.x = [1, 2, 3, 4, 5] self.y = [1, 4, 9, 16, 25] self.ax.plot(self.x, self.y) # 创建一个 Matplotlib 的画布,用于显示 Figure 对象 self.canvas = FigureCanvasTkAgg(self.fig, master=self) self.canvas.draw() self.canvas.get_tk_widget().pack(side="bottom", fill="both", expand=True) def plot_data(self): # 在 Axes 对象绘制另一条曲线 self.ax.plot(self.x, [i ** 2 for i in self.x]) self.canvas.draw() root = tk.Tk() app = Application(master=root) app.mainloop() ``` 这个例子,我们首先创建了一个继承自`tk.Frame`的类`Application`,然后在类的构造函数创建了一个按钮和一个Matplotlib的Figure对象。我们在Figure对象创建了一个Axes对象,并在Axes对象绘制了一条曲线。接着,我们创建了一个Matplotlib的画布,并将Figure对象显示在画布上。 当用户点击按钮时,我们在Axes对象绘制了另一条曲线,并通过调用`canvas.draw()`方法,将更新后的Figure对象显示在画布上。 你可以尝试运行这个例子,看看它是如何工作的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值