问题描述
这是我使用 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 (将#修改为@)