linia | Bonjour,
je suis en train d'essayer de coder une interface graphique qui permette à l'utilisateur de choisir un modèle, puis de rentrer des valeurs et qui trace le graphe qui correspond. Je suis bloquée, je ne comprends pas du tout ce qui ne marche pas.
- je n'arrive pas à récupérer la valeur que 'Double' enregistre plus tard dans mon code
- lorsque je lance le code, il me dit qu'il ne peut pas convertir la valeur de ei.get() en float. Je pense que c'est parce qu'il n'attend pas que je rentre des valeurs et que j'appuie sur ok. Comment corriger cela ?
Merci pour toute votre aide, je commence vraiment à desesperer.
Code :
- # -*- coding: utf-8 -*-
- from tkinter import *
- import numpy as np
- import matplotlib.pyplot as plt
- class GUI:
- def __init__(self):
- self.root = Tk()
- self.labelVariable = StringVar()
- self.root.title('Projet informatique')
- self.initialize()
- self.root.mainloop()
- def initialize(self):
- self.main = Frame(self.root)
- self.main.pack()
- label = Label(self.main, textvariable=self.labelVariable, font=('courier',10,'bold'), anchor="w", fg="red", bg="white" )
- label.pack()
- self.labelVariable.set("Modelisation de populations atteintes dun virus" )
- v=Listbox(self.main)
- v.insert("end","Modele SIR" )
- v.insert("end","Modele de Witowski" )
- v.insert("end","Modele de Munz" )
- v.insert("end","Modele avec traitement" )
- v.bind("<Double-Button-1>", self.Double)
- v.pack(expand=1,fill=BOTH)
- def Double(self,event):
- widget = event.widget
- selection = widget.curselection()
- value = widget.get(selection[0])
- self.newWindow(value)
- return(value)
- def ModifyTextarea(self,elem,msg,clear=None):
- elem.config(state=NORMAL)
- if clear:
- elem.delete(1.0, END)
- else:
- elem.insert(END,msg)
- elem.config(state=DISABLED)
- def newWindow(self,msg):
- top = Toplevel(self.root)
- q1 = Frame(top)
- q1.pack()
- top.grab_set()
- text = Text(q1,state=DISABLED,exportselection=True)
- text.pack()
- self.ModifyTextarea(text,msg)
- e1=Entry(q1)
- e2=Entry(q1)
- e3=Entry(q1)
- e4=Entry(q1)
- e5=Entry(q1)
- e6=Entry(q1)
- e1.pack()
- e2.pack()
- e3.pack()
- e4.pack()
- e5.pack()
- e6.pack()
- def zombies() :
- a=float(e1.get())
- b=float(e2.get())
- ze=float(e3.get())
- T=float(e4.get())
- N=float(e5.get())
- dt=float(e6.get())
- n = T/dt
- n=int(n)
- t=np.zeros((n+1))
- for i in range (0,n):
- t[0]=0
- t[i+1]=t[i]+dt
- s = np.zeros((n+1))
- z = np.zeros((n+1))
- r = np.zeros((n+1))
- s[0] = N-1
- z[0] =1
- r[0] = 0
- for i in range (n-1):
- s[i+1] = s[i] + dt*(-b*s[i]*z[i])
- z[i+1] = z[i] + dt*(b*s[i]*z[i]-a*s[i]*z[i]+ze*r[i])
- r[i+1] = r[i] + dt*(a*s[i]*z[i]- ze*r[i])
- if s[i+1]<0 or s[i+1] >N:
- s[i+1]=0
- break
- if z[i+1] > N or z[i+1] < 0:
- z[i+1]=0
- break
- if r[i+1] <0 or r[i+1] >N:
- r[i+1]=0
- break
- return (t,s,r,z,i+2)
- btnquit = Button(q1,width = 1,text = "Ok",command =zombies)
- btnquit.pack()
- t,s,r,z,i=zombies()
- plt.plot(t[:i],s[:i],'b')
- plt.plot(t[:i],z[:i],'r')
- plt.plot(t[:i],r[:i],'y')
- plt.show()
- if __name__ == "__main__":
- app = GUI()
|
|