Mundo em Python

Login (com base de dados)

from tkinter import *
from tkinter import messagebox as ms
import sqlite3 with sqlite3.connect('quit.db') as db:
c = db.cursor() c.execute('CREATE TABLE IF NOT EXISTS user (username TEXT NOT NULL PRIMARY KEY,password TEX NOT NULL);')
db.commit()
db.close()
class main:
def __init__(self, master):
self.master = master
self.username = StringVar()
self.password = StringVar()
self.n_username = StringVar()
self.n_password = StringVar()
self.widgets()
def login(self):
with sqlite3.connect('quit.db') as db:
c = db.cursor()
find_user = ('SELECT * FROM user WHERE username = ? and password = ?')
c.execute(find_user, [(self.username.get()), (self.password.get())])
result = c.fetchall()
if result:
self.logf.pack_forget()
self.head['text'] = 'Olá , ' + self.username.get()
self.head['pady'] = 150
self.head['fg'] = 'green'
else:
ms.showerror('Oops!', 'Utilizador não encontrado.')
def new_user(self):
with sqlite3.connect('quit.db') as db:
c = db.cursor()
find_user = ('SELECT username FROM user WHERE username = ?')
c.execute(find_user, [(self.n_username.get())])
if c.fetchall():
ms.showerror('Erro!', 'Utilizador já registado.')
else:
ms.showinfo('Nova Conta','Conta criada com sucesso')
self.log()
insert = 'INSERT INTO user(username,password) VALUES(?,?)'
c.execute(insert, [(self.n_username.get()), (self.n_password.get())])
db.commit()
def log(self):
self.username.set('')
self.password.set('')
self.crf.pack_forget()
self.head['text'] = 'LOGIN'
self.logf.pack()
def cr(self):
self.n_username.set('')
self.n_password.set('')
self.logf.pack_forget()
self.head['text'] = 'Criar Nova Conta'
self.head['fg'] = 'blue'
self.crf.pack()
def widgets(self):
self.head = Label(self.master, text='LOGIN', font=('', 35), pady=10)
self.head.pack()
self.logf = Frame(self.master, padx=10, pady=10)
Label(self.logf, text='Utilizador: ', font=('', 20), pady=5, padx=5).grid(sticky=W)
Entry(self.logf, textvariable=self.username, bd=5, font=('', 15)).grid(row=0, column=1)
Label(self.logf, text='Password: ', font=('', 20), pady=5, padx=5).grid(sticky=W)
Entry(self.logf, textvariable=self.password, bd=5, font=('', 15), show='*').grid(row=1, column=1)
Button(self.logf, text=' Login ', bd=3, font=('', 15), padx=5, pady=5, command=self.login).grid()
Button(self.logf, text=' Criar Conta ', bd=3, font=('', 15), padx=5, pady=5, command=self.cr).grid(row=2,
column=1)
self.logf.pack()
self.crf = Frame(self.master, padx=10, pady=10)
Label(self.crf, text='Utilizador: ', font=('', 20), pady=5, padx=5).grid(sticky=W)
Entry(self.crf, textvariable=self.n_username, bd=5, font=('', 15)).grid(row=0, column=1)
Label(self.crf, text='Senha: ', font=('', 20), pady=5, padx=5).grid(sticky=W)
Entry(self.crf, textvariable=self.n_password, bd=5, font=('', 15), show='*').grid(row=1, column=1)
Button(self.crf, text='Registar', bd=3, font=('', 15), padx=5, pady=5, command=self.new_user).grid()
Button(self.crf, text=' Login', bd=3, font=('', 15), padx=5, pady=5, command=self.log).grid(row=2,
column=1)
if __name__ == '__main__':
root = Tk()
root.title('Login ')
root.geometry('400x350+300+300')
root.resizable(False,False)
main(root)
root.mainloop()

 


Fonte: https://github.com/nj-AllAboutCode/Python-Tkinter-Projects/blob/master/tkinter-LoginForm-Sqlite3.py

0