Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1286 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Tkinter-Problème pour récupérer les valeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tkinter-Problème pour récupérer les valeurs

n°2254015
linia
Posté le 24-03-2015 à 09:50:47  profilanswer
 

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 :
  1. # -*- coding: utf-8 -*-
  2. from tkinter import *
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. class GUI:
  6.     def __init__(self):
  7.         self.root      = Tk()
  8.         self.labelVariable = StringVar()
  9.         self.root.title('Projet informatique')
  10.         self.initialize()
  11.         self.root.mainloop()
  12.     def initialize(self):
  13.         self.main = Frame(self.root)
  14.         self.main.pack()
  15.         label = Label(self.main, textvariable=self.labelVariable, font=('courier',10,'bold'), anchor="w", fg="red", bg="white" )
  16.         label.pack()
  17.         self.labelVariable.set("Modelisation de populations atteintes dun virus" )
  18.         v=Listbox(self.main)
  19.         v.insert("end","Modele SIR" )
  20.         v.insert("end","Modele de Witowski" )
  21.         v.insert("end","Modele de Munz" )
  22.         v.insert("end","Modele avec traitement" )
  23.         v.bind("<Double-Button-1>", self.Double)
  24.         v.pack(expand=1,fill=BOTH)
  25.     def Double(self,event):
  26.         widget    = event.widget
  27.         selection = widget.curselection()
  28.         value     = widget.get(selection[0])
  29.         self.newWindow(value)
  30.         return(value)
  31.     def ModifyTextarea(self,elem,msg,clear=None):
  32.         elem.config(state=NORMAL)
  33.         if clear:
  34.             elem.delete(1.0, END)
  35.         else:
  36.             elem.insert(END,msg)
  37.         elem.config(state=DISABLED)
  38.     def newWindow(self,msg):
  39.         top = Toplevel(self.root)
  40.         q1 = Frame(top)
  41.         q1.pack()
  42.         top.grab_set()
  43.         text = Text(q1,state=DISABLED,exportselection=True)
  44.         text.pack()
  45.         self.ModifyTextarea(text,msg)
  46.         e1=Entry(q1)
  47.         e2=Entry(q1)
  48.         e3=Entry(q1)
  49.         e4=Entry(q1)
  50.         e5=Entry(q1)
  51.         e6=Entry(q1)
  52.         e1.pack()
  53.         e2.pack()
  54.         e3.pack()
  55.         e4.pack()
  56.         e5.pack()
  57.         e6.pack()
  58.         def zombies() :
  59.                 a=float(e1.get())
  60.                 b=float(e2.get())
  61.                 ze=float(e3.get())
  62.                 T=float(e4.get())
  63.                 N=float(e5.get())
  64.                 dt=float(e6.get())
  65.                 n = T/dt
  66.                 n=int(n)
  67.                 t=np.zeros((n+1))
  68.                 for i in range (0,n):
  69.                     t[0]=0
  70.                     t[i+1]=t[i]+dt
  71.                 s = np.zeros((n+1))
  72.                 z = np.zeros((n+1))
  73.                 r = np.zeros((n+1))
  74.                 s[0] = N-1
  75.                 z[0] =1
  76.                 r[0] = 0
  77.                 for i in range (n-1):
  78.                     s[i+1] = s[i] + dt*(-b*s[i]*z[i])
  79.                     z[i+1] = z[i] + dt*(b*s[i]*z[i]-a*s[i]*z[i]+ze*r[i])
  80.                     r[i+1] = r[i] + dt*(a*s[i]*z[i]- ze*r[i])
  81.                     if s[i+1]<0 or s[i+1] >N:
  82.                         s[i+1]=0
  83.                         break
  84.                     if z[i+1] > N or z[i+1] < 0:
  85.                         z[i+1]=0
  86.                         break
  87.                     if r[i+1] <0 or r[i+1] >N:
  88.                         r[i+1]=0
  89.                         break
  90.                     return (t,s,r,z,i+2)
  91.         btnquit = Button(q1,width = 1,text = "Ok",command =zombies)
  92.         btnquit.pack()
  93.         t,s,r,z,i=zombies()
  94.         plt.plot(t[:i],s[:i],'b')
  95.         plt.plot(t[:i],z[:i],'r')
  96.         plt.plot(t[:i],r[:i],'y')
  97.         plt.show()
  98. if __name__ == "__main__":
  99.     app = GUI()

mood
Publicité
Posté le 24-03-2015 à 09:50:47  profilanswer
 

n°2266951
swissforev​er
i7 Inside
Posté le 02-10-2015 à 14:35:00  profilanswer
 

c'est pas une histoire d'espace avant ou/et après les "=" ? il me semble, bien que débutant, que des fois c'est important non?


---------------
Swisscore
n°2267224
masklinn
í dag viðrar vel til loftárása
Posté le 07-10-2015 à 11:34:27  profilanswer
 

Il y a des bouts de bricolage qui sont vraiment bizarres dans ton code. Dans zombies pourquoi tu as une boucle alors que tu boucles pas? (soit tu break et sors de la boucle soit tu return ligne 103 et sors aussi de la boucle), et pourquoi tu appelles vas chercher les valeurs de tes inputs juste après avoir créé les dits inputs (ligne 111)? Logiquement cliquer sur le bouton devrait lancer les calculs et si pas d'erreur afficher le graph. Là cliquer sur le bouton va lancer les calculs et balancer le résultat à la poubelle sans rien en faire.

 

Et dans tous les cas, ta fonction de calcul doit valider que les valeurs dans les champs ont un sens, tkinter.Entry ne fait aucune validation donc l'utilisateur peut saisir tout et n'importe quoi.

 
swissforever a écrit :

c'est pas une histoire d'espace avant ou/et après les "=" ? il me semble, bien que débutant, que des fois c'est important non?


C'est jamais un problème en python, même si avoir des espacements propres et réguliers est habituellement préféré pour question de lisibilité.


Message édité par masklinn le 07-10-2015 à 11:35:10

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Tkinter-Problème pour récupérer les valeurs

 

Sujets relatifs
[résolu][sqlserver-managementstudio]plus de touches de contrôle[EXCEL] problème avec SendKeys pour envoyer un pipe "|" vers Putty
Problème pour enlever le GRAS du texteLe bouton apparait 2 fois ! Problème dans le code !
Probleme de macroProblème avec code::blocks
Problème aléatoire sur les web services[resolue] probleme de physique
Problème sous Eclipse[RESOLU] problème d'install de CPAN
Plus de sujets relatifs à : Tkinter-Problème pour récupérer les valeurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR