如何解决更改输入值后如何在同一画布中显示图形?
这是我使用 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 举报,一经查实,本站将立刻删除。