Mon script python, avec tkinter et sqlite3:mon script (comme indiqué) ne se connecte pas correctement?
#! /usr/bin/python
from Tkinter import *
import hashlib
import sqlite3
conn = sqlite3.connect("test.db")
query = conn.cursor()
root = Tk()
root.geometry("800x800+10+10")
root.title('test')
user_session = "None"
def login():
username_val_ = username_.get()
password_val_ = password_.get()
password_en = hashlib.sha512(password_val_).hexdigest()
query.execute("SELECT `username` FROM `users` WHERE `username` = ? AND `password` = ?", (username_val_, password_en))
rows = 0
for user in query:
rows = rows +1
final_name_ = user
if rows == 1:
final_name = final_name_[0]
user_session = final_name
print(user_session)
if user_session == "None":
username_l = Label(root, text= "Username:")
username_l.place(x=20, y=0)
username = Entry(root)
username.place(x=20, y=20)
password_l = Label(root, text= "Password:")
password_l.place(x=20, y=50)
password = Entry(root, show="*")
password.place(x=20, y=70)
def clear_fields():
username.delete(0, END)
password.delete(0, END)
def clear_fields_():
username_.delete(0, END)
password_.delete(0, END)
def join(username, password):
new_pass = hashlib.sha512(password).hexdigest()
print(new_pass)
query.execute("INSERT INTO users (username, password) VALUES(?, ?)", (username, new_pass))
conn.commit()
def run_test():
username_val = username.get()
password_val = password.get()
if len(username_val)>0 and len(password_val)>0:
error_textv.set("")
join(username_val, password_val)
suc_textv.set("Well done!")
else:
error_textv.set("All fields are required")
button = Button(root, text = "Reset", command = clear_fields)
button.place(x=120, y=100)
button = Button(root, text = "Register", command = run_test)
button.place(x=20,y=100)
error_textv = StringVar()
error_textv.set("")
error_text = Label(root, textvariable= error_textv, fg = 'red')
error_text.place(x=40,y=140)
suc_textv = StringVar()
suc_textv.set("")
suc_text = Label(root, textvariable= suc_textv, fg = 'green')
suc_text.place(x=40,y=140)
suc_text = Label(root, text = 'Or')
suc_text.place(x=400,y=50)
username_l_ = Label(root, text= "Username:")
username_l_.place(x=600, y=0)
username_ = Entry(root)
username_.place(x=600, y=20)
password_l_ = Label(root, text= "Password:")
password_l_.place(x=600, y=50)
password_ = Entry(root, show="*")
password_.place(x=600, y=70)
button_ = Button(root, text = "Reset", command = clear_fields_)
button_.place(x=700, y=100)
button_ = Button(root, text = "Login", command = login)
button_.place(x=600,y=100)
else:
print "Welocme"
photo = PhotoImage(file="email.gif")
w = Label(root, image=photo)
w.photo = photo
w.place(x=300, y = 600)
root.mainloop()
Comme vous le verrez, mon code est très mal écrit et en désordre. Sur la fonction de connexion, j'espérais que cela définirait "user_session" au nom d'utilisateur, ce qu'il fait, mais l'instruction if "if user_session =" None ": alors la page de connexion entière est affichée, mais quand je définis le variable au nom d'utilisateur de connexion la page de connexion reste, au lieu d'imprimer "bienvenue" ... des idées?
Le mainloop n'est pas démarré jusqu'à ce que tous les autres code (l'instruction 'if', etc.) a al course prête. Python n'exécutera plus ce code, quel que soit l'interface de Tk. –
ok, c'est logique. aurai-je besoin d'un peu de boucle? –
Vous devez restructurer votre code, oui. –