IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Améliorer le code (débutant)


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable technique
    Inscrit en
    Mars 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Mars 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Améliorer le code (débutant)
    Bonjour à tous,

    Je suis le forum depuis un petit moment qui est une mine d'information, merci
    J'aurai besoin d'avis d'expert car je débute en programmation Python.
    Je suis en train de créer un petit programme me faisant des calculs de TVA en récupérant la valeur via un Entry + Combobox, mais je me rends compte en intégrant les TVA des Dom Tom que j'en ai 8... Du coup, mon code est assez répétitif et certainement mal écrit et optimisé. Toutes mes confuses si vos yeux saignent
    La fenêtres est sous Tkinter (je n'ai copié que le début et la fin pour vous épargner). Y a t-il un moyen de rendre plus propre mon code et éviter les répétitions (8 fois) des Label etc...

    Merci d'avance pour vos conseils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    def checkcmbo():
        if tva_combo.get() == taux1:
            try:
                 result = round(int(Entry_Montant.get())*TVA1, 2)
                 MontantTvaTTC_HT = round(int(Entry_Montant.get()) - result,2)
                 VarLabelResultatTTC_HT = (f"Le montant hors taxe est: {result} € soit {MontantTvaTTC_HT} € de TVA")
                 LabelResultatTTC_HT = tkinter.Label(app, text=VarLabelResultatTTC_HT)
                 LabelResultatTTC_HT.place(x=100, y=130)
            except ValueError:
                 messagebox.showerror(title="Erreur", message="Vous n'avez pas saisi de montant TTC")
    
        elif tva_combo.get() == taux2:
            try:
                result = round(int(Entry_Montant.get())*TVA2, 2)
                MontantTvaTTC_HT = round(int(Entry_Montant.get()) - result, 2)
                VarLabelResultatTTC_HT = (f"Le montant hors taxe est: {result} € soit {MontantTvaTTC_HT} € de TVA")
                LabelResultatTTC_HT = tkinter.Label(app, text=VarLabelResultatTTC_HT)
                LabelResultatTTC_HT.place(x=100, y=130)
            except ValueError:
                 messagebox.showerror(title="Erreur", message="Vous n'avez pas saisi de montant TTC")
    
    
    [---] PARTIE SUPPRIMEEE
    
    
      elif tva_combo.get() == "":
             messagebox.showerror(title= "Erreur", message="Vous n'avez pas choisi de TVA")
    
    
    tva_combo.place(x=100, y=100)
    
    btn = ttk.Button(app, text="Calculer", command=checkcmbo)
    btn.place(x=100, y=160)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Salut,

    Dans un premier temps, une suite d'instructions qui se répètent à quelques variables près se factorisent en fonction et on a la structure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ...
        f(a)
    elif ...
        f(b)
    else:
        f(c)
    Maintenant qu'on voit mieux la structure, on peut passer par une variable intermédiaire et écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ...
        z = a
    elif ...
        z = b
    else:
        z = c
    f(z)
    et se poser la question du remplacement de la fonction par les instructions initiales.
    Apprendre à programmer, c'est s'habituer à faire ce genre de gymnastique (i.e. avec l'habitude on fait çà "de tête"...)

    Après on peut même remplacer la cascade de if... elif... else... par un dictionnaire... Mais là on est dans l'utilisation de fonctionnalités du langage qui permettent une écriture plus souple.

    - W

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Plutôt que de faire des pavés de "try", j'aurais mis une condition en début de fonction checkcmbo() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def checkcmbo() :
        if tva_combo.get() == '' :
            tkinter.messagebox.showerror(message='No TVA selected...')
            return
        [...]
    Du coup, la fonction s'arrête s'il n'y a pas de valeur d'entrée...

Discussions similaires

  1. petit pb de code, (débutante en informatique)
    Par elise69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2007, 21h26
  2. [Tableaux] Amélioration de code (if)
    Par Sir Tengu dans le forum Langage
    Réponses: 3
    Dernier message: 24/12/2006, 01h26
  3. Soucis CODE (Débutant)
    Par matt8-5 dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2006, 11h10
  4. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 21h13
  5. Xsl problème d'affichage (code) [débutant]
    Par redsaint dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 01/06/2005, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo