Annonce

Réduire
Aucune annonce.

débuter une IHM en python

Réduire
X
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #16
    Je test le script sous Windows, comme l'a si bien fait remarqué Sakarov
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

    Commentaire


    • #17
      Bonsoir,

      Je suis tombé sur ce vieux challenge qui m'a donné envie de créer mon premier programme IHM en utilisant tkinter

      Code:
      from Tkinter import *
      import tkMessageBox
      
      def verifAuth():
      
          login = str(entr1.get())
          mdp = str(entr2.get())
          passFile = open('users.txt')
          i = 0
          for line in passFile.readlines():
              if ":" in line:
                  user = line.split(':')[0]
                  Pass = line.split(':')[1].strip(' ').strip('\n')
                  if login == user and mdp == Pass:
                      lbl3.config(text = 'authentification OK', fg ='green')
                      tkMessageBox.showinfo(title='authentification', message="connexion reussie")                
                      break
                  elif i >= 8:
                      lbl3.config(text = 'erreur d\'authentification', fg = 'red')    
      
                      tkMessageBox.showinfo(title='authentification', message="login ou mot de passe invalide")
                                  
                  else:
                      pass
                  i = i+1
      
      
      def effacer():
      
          entr1.delete(0, END)
          entr2.delete(0, END)
      
      
      
      
      fen1 = Tk()
      txt1 = Label(fen1, text = 'Login :')
      txt2 = Label(fen1, text = 'Password :')
      lbl3 = Label(fen1)
      entr1 = Entry(fen1)
      entr2 = Entry(fen1, show="*")
      b= Button(text='connexion', command=verifAuth)
      b1 = Button(text='abandon', command= effacer)
      b.grid(row =2)
      b1.grid(row =2, column =2)
      txt1.grid(row =0)
      txt2.grid(row =1)
      lbl3.grid(row =5)
      entr1.grid(row =0, column =1)
      entr2.grid(row =1, column =1)
      fen1.mainloop()
      1.png
      2.png
      3.png
      Fichiers attachés
      L'esprit à autant besoin de livres qu'une épée de pierre à aiguiser pour conserver son tranchant.

      Commentaire


      • #18
        Bonjour, quelques remarques:

        1) login = str(entr1.get()) -> fonction str inutile, entr1.get() renvoie déjà une chaîne de caractères et donc mdp idem.
        2) Combien as-tu de lignes dans ton fichier users.txt ? Plus de 2 ? Dans ce cas je n'ai pas compris ce que tu tentes de faire. Dans l'autre cas, je ne comprend pas comment ton compteur peut arriver à 8 ?

        Après pour le reste, c'est de l'aménagement de code, rien de plus.

        Commentaire


        • #19
          Bonjour,

          mon fichier users.txt contient 8 lignes, c'est pour ça que j'ai utilisé un compteur pour qu'il n'affiche qu'une seule fois le messagebox 'error login' une fois qu'il aura parcouru tout le fichier et d'éviter ainsi l'affichage de plusieurs fenêtre en cas d'erreur.

          Merci pour ta réponse.
          Dernière modification par Slayervx, 25 octobre 2014, 16h24.
          L'esprit à autant besoin de livres qu'une épée de pierre à aiguiser pour conserver son tranchant.

          Commentaire


          • #20
            Ok je comprend mieux.

            Plus simple peut-être

            Code:
            FILE = 'users.txt'
            with open(FILE, 'r') as f:
                lines = [line.strip('\n') for line in f.readlines()]
                for line in lines:
                    user, Pass = line.split(':')
                    if login == user and mdp == Pass:
                        # suite du code

            Commentaire

            Chargement...
            X