[Python] Rendere un campo obbligatorio

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Daniele92
Prode Principiante
Messaggi: 21
Iscrizione: lunedì 11 novembre 2013, 18:32

[Python] Rendere un campo obbligatorio

Messaggio da Daniele92 »

Salve a tutti,
sono nuovo nella programmazione e avevo bisogno d'aiuto su una cosa.
Innanzitutto questo programma è una prova, tanto per vedere se quello che ho imparato su Python è giusto, per vedere se ho capito.
Questo è il codice del programma:

Codice: Seleziona tutto

from Tkinter import *

#Registrazione---------------------------------------------
def pass_reg ():
      global pass_utente, pass_conferma
      pass_utente= raw_input ("Inserisci password \n")
      pass_conferma= raw_input ("Inserisci nuovamente la password per confermare \n")
      ctrl_pass()
def registrazione ():
      global nome_utente
      nome_utente= raw_input ("Inserisci Nome utente \n")
      pass_reg()
def ctrl_pass ():
      if pass_utente!=pass_conferma:
            print "password inserita errata"
            pass_reg()
      else:
            print "Registrazione effettuata"
#Login------------------------------------------------------
def login ():
      global login_utente, pass_login
      login_utente= raw_input ("Inserisci Nome utente \n")
      pass_login = raw_input ("Inserisci password \n")
      ctrl_login()
def ctrl_login ():
      try:
            if login_utente!=nome_utente or pass_login!=pass_utente:
                  print "Nome Utente o password errati"
                  login()
            else:
                  print "Benvenuto", login_utente
      except NameError:
            print "Nome utente non registrato"
            login()
#Interfaccia grafica-----------------------------------------
finestra_principale=Tk()
bott_reg=Button(text="Registrazione",command=registrazione).pack(side=RIGHT,anchor=N)
bott_log=Button(text="Login",command=login).pack(side=RIGHT,anchor=N)
finestra_principale.mainloop()

Quando eseguo il programma è faccio la registrazione, premo direttamente invio e lascio il campo del nome utente vuoto, anche quella della password e della conferma password, naturalmente quando fa il controllo, password è diverso da conferma password? No, tutti è due sono campivuoti e quindi passa tutto, invece NO!! Non voglio che faccia questo.
Vorrei rendere questi campi obbligatori, cioè voglio che l'utente scriva qualcosa obbligatoriamente, ma come? Visto che lasciando i campi vuoti comunque passa al controllo e non mi fa nessun tipo d'errore, penso che non si debba usare in questo caso il modulo TRY_EXCEPT.
Cosa devo fare?
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Python] Rendere un campo obbligatorio

Messaggio da crap0101 »

dovresti strutturare meglio il codice, tutte quelle funzioni "sparse" con variabili globali sono un incubo (se ne è parlato ampiamente, qui e altrove, riguardo tk e altro) sia per leggere il codice sia per - eventualmente - modificarlo.
Altra cosa... che senso ha fare una gui se poi i dati li devi inserire da terminale con raw_input?

Per i campi vuoti basta aggiungere il controllo che non lo siano, non è questione di try/except che puoi usare o meno.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
Daniele92
Prode Principiante
Messaggi: 21
Iscrizione: lunedì 11 novembre 2013, 18:32

Re: [Python] Rendere un campo obbligatorio

Messaggio da Daniele92 »

dovresti strutturare meglio il codice, tutte quelle funzioni "sparse" con variabili globali sono un incubo sia per leggere il codice sia per - eventualmente - modificarlo.
Ah, sono ancora un pivello, anche se in realtà mi sono trovato veramente bene con tutte ste funzioni e variabili globali, molto comodi e facili da capire. Poi naturalmente tu ne saprai più di me, ora il programma è semplice perché è una stupidata in quattro righe.
Altra cosa... che senso ha fare una gui se poi i dati li devi inserire da terminale con raw_input?
Semplicemente era quello che volevo, la mia intenzione era quello di fare solo due bottoni, uno che mi fa la registrazione, l'altro il login. :asd:
Il mio prossimo obbiettivo e fare tutto da finestra. Prima di questa versione facevo tutto dalla shell, una volta avviato il programma faceva in ordine prima la registrazione poi il login.
Per i campi vuoti basta aggiungere il controllo che non lo siano, non è questione di try/except che puoi usare o meno.
Tipo così?

Codice: Seleziona tutto

while nome_utente == "" or pass_utente == "" or pass_conferma == "":
    print "Inserire i dati in tutti i campi"
    registrazione ()
Magari scritto dentro def ctrl_pass e sopra all'if?

Comunque grazie per aver risposto. :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 22 ospiti