Lorsque j'essaie de générer un mot de passe, même si vous entrez la longueur Python indique que la variable C'est l'erreur que Python me donne: P> < Pré> xxx pré> Voici mon code: p> longueurtr code> est vide.
3 Réponses :
La raison pour laquelle vous obtenez cette erreur est probablement parce que vous n'avez rien entré dans l'entrée Ce serait la création du bouton: p> () code>. Pour éviter cette erreur, utilisez un
essayer code> et
sauf code>.
Pour éviter cette erreur, ils doivent avoir un bouton qui l'obtient. Si le programme utilise ce code, immédiatement lorsque l'entrée code> est rendue, elle essaiera ceci - et s'il n'y a rien dans l'entrée code> ... Eh bien, ça ne va pas La valeur, et ils obtiendront
NameError code> S s'ils essaient de l'utiliser.
@ Thetechrobo36414519 fixe.
Vous pouvez avoir une liste d'erreurs pour économiser de l'espace, par exemple: sauf (ValueError, NameError): code>. De plus, je pense que si, sinon devrait faire l'affaire également par chèque si la boîte d'entrée est vide ou non.
@Saad merci! Je ne le savais pas.
@ 10Rep je voulais dire, vous utilisez sauf: passez code> au lieu d'essayer à nouveau jusqu'à ce que est i> aucune erreur ... Si c'était dans une boucle ou qu'il y avait un bouton comme le L'utilisateur a cliqué sur (comme dans ma réponse), ce serait bien. Si vous le faites de cette façon (n'essayez qu'une seule fois, d'essayer plusieurs fois, effectuez votre code dans une boucle tandis que si elle est réussie (aucune exception) Exécuter
break code>) et l'entrée
Code> était vide ... ils obtiendraient l'erreur qu'ils utilisaient tous - convertir une chaîne (
'' '' code>) dans un entier.
Pour éviter cette erreur, vous devez appeler .get () code> seulement strud> lorsque l'utilisateur est entré dans le texte; à cet effet, je suggère d'utiliser un bouton:
def getTextFromEntry(theEntry):
global lengthstr
lengthstr = length.get()
print(lengthstr)
def generatepassword():
generatefunction.destroy()
seepassbutton.destroy()
text.destroy()
textgen = "Genera una Password"
textgen = tk.Label(window, text=textgen, fg="#333333", font=("Helvetica", 32, "bold"))
textgen.grid(row=0, column=0, sticky="N")
length = tk.Entry(window, justify="center")
length.grid(row=2, column=0, pady=10, ipadx=42)
getValue = Button(text="Generate password", command=getTextFromEntry)
getValue.pack()
textgen = "Inserisci la lunghezza della Password"
textgen = tk.Label(window, text=textgen, fg="#333333", font=("Helvetica", 10))
textgen.grid(row=3, column=0, sticky="N")
generatebutton = tk.Button(window, text="Genera", font=("Helvetica", 12, "bold"), bg="#007acc", activebackground="#66c2ff", command=lambda: generate(int(lengthstr)))
generatebutton.config(relief="flat")
generatebutton.grid(row=4, column=0, pady=6, ipady=1, ipadx=240)
generatebutton = tk.Button(window, ..., command=lambda:generate(int(float(lengthstr)))
Vous avez raison, je pense que la valeur de longueur code> est la chaîne de
"" code> c'est pourquoi il donne un
ValueError: ... int () avec base 10: '' ' code> erreur.
Oui .. op tente d'obtenir le champ de saisie lors de l'initialisation lorsque l'utilisateur n'a entré aucun texte.
Le correctif est simple, on peut passer longueurtr code> sans convertir en
float code> ou
int code>, puis dans
générer code> fonctionne la valeur de
LongueurR Code> peut être vérifié avec quelques déclarations simples
if-ele code>.
Oui, ou mieux obtenir toujours l'entrée dans la méthode génératrice.
Veuillez visiter et lire Stackoverflow.com/help fournit également un exemple de travail minimal. Votre code est trop complexe.
Vous avez créé une entrée, puis immédiatement i> appelé
.get () code> dessus. Vous avez reçu une chaîne vide, bien sûr - où imaginez-vous que toute autre valeur pourrait être venue? Vous devez faire le
.get () code> dans la fonction
de la commande = code> de la touche, qui ne se produira probablement pas avant que l'utilisateur ait saisi quelque chose.
qu'est-ce que
longueur code> retour
Vous devez d'abord comprendre Event-Driven_Programmer . Lisez par
[tkinter] Programmation entraînée code> < / a>
@IsaacFrank Je pense que c'est la longueur du mot de passe que les demandes utilisateur, mais je pourrais avoir tort ...
De plus, lorsque vous exécutez ce
def générer (longueur): Longueur de retour code> Il n'exbliera plus de code dans cette fonction.
@ Thetechrobo36414519 Exactement, il retourne la longueur avant la fin de toute logique.
Oui @isaacFrank, mais alors ce qu'il arrive
passgen = "" .join (Choix (caractères) pour x dans la plage (longueur)) passwd = tk.entry (fenêtre) passwd.insert (0, passags) passwd.grid ( rangée = 5, colonne = 0, collant = "n") code>?
Ça ne marche pas ..