更改输入值后如何在同一画布中显示图形?

问题描述

这是我使用 python tkinter 进行一些计算的代码,所以我的问题是 当我更改 N 的值时,我想单击验证并获得新的“显示图表”而不是第二个 正如你在这张照片中看到的 image for first enter N 我希望显示图表出现在第一个上,就像刷新页面一样 image for second enter N

import numpy as np
import matplotlib.pyplot as plt
from tkinter import *
from tkinter import ttk
from matplotlib.backends.backend_tkagg import (figureCanvasTkAgg)
fen = Tk()
fen.title("HomeWork")
fen.geometry("1300x600")
def action():

    N = int(entree.get())
    x = np.random.uniform(low=-1,high=1,size=[N,1])
    y = np.random.uniform(low=-1,1])

    inside_bool = x * 2 + y * 2 < 1
    app_pi = 4 * np.sum(inside_bool) / N
    er = np.pi - app_pi
    entree1.insert(0,app_pi)
    entree2.insert(0,er)
    x_in = x[inside_bool]
    y_in = y[inside_bool]
    fig = plt.figure(figsize=[5,5])
    plt.scatter(x,y,s=1)
    plt.scatter(x_in,y_in,color='r',s=1)


    def afficher():
        canvas.draw()  # cette instruction permet de dessiner la courbe de matplotlib dans la canvas
        canvas.get_tk_widget().pack()  # cette instruction permet de packer la canvas sur la fenetre "root"

    canvas = figureCanvasTkAgg(fig,fen)  # cette instruction permet de créer une zone "canvas" où
    # placer la figure ...
    #canvas.itemconfigure(id,state='hidden')
    bouton = ttk.Button(fen,text="Show the graph",command=afficher)

    bouton.pack(fill=X,pady=10)


lblnombre1 = Label(fen,text = "entrer la valeur de N ")
lblnombre1.place(x = 50,y = 50)
entree = Entry(fen)
temp=entree.get()
entree.place(x = 200,y = 50)
lblnombre2 = Label(fen,text = "l'approximation de pi")
lblnombre2.place(x = 50,y = 100)
entree1 = Entry(fen)
entree1.place(x = 200,y = 100)
lblnombre3 = Label(fen,text = "erreur:")
lblnombre3.place(x = 50,y = 150)
entree2 = Entry(fen)
entree2.place(x = 200,y = 150)
valider = Button(fen,text = "valider l'operation",command = action)
valider.place( x = 200,y = 250)

fen.mainloop()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)