Código HTML:
import ttkbootstrap as tb
from ttkbootstrap.dialogs import Messagebox
import pyodbc
# Criando a janela app
app = tb.Window(title="MuOnline App")
# instanciar o estilo com outro tema
style = tb.Style(theme='superhero')
# Trocando o tema
def changer(theme):
tb.Style(theme=theme)
# Chamando notebook na janela app
meu_noteboock = tb.Notebook(app)
meu_noteboock.pack(padx=10, pady=10)
# Criando os notebook
cadastro = tb.Frame(meu_noteboock)
ranking = tb.Frame(meu_noteboock)
# Ativando os notebook
meu_noteboock.add(cadastro, text='Cadastro')
meu_noteboock.add(ranking, text='Ranking')
# Compara dos dados na entry e se for valido faz um insert no sql
def comparacao():
nome = nome_cadastro.get()
nick = nick_cadastro.get()
senha = senha_cadastro.get()
conf_senha = confirmar_senha_cadastro.get()
email = email_cadastro.get()
conf_email = confirmar_email_cadastro.get()
telefone = cadastro_telefone.get()
p_id = person_id.get()
if nome == '' or nick == '' or senha == '' or conf_senha == '' or email == '' or conf_email == '' or p_id == ''\
or telefone == '':
Messagebox.show_info('Por favor não deixe campos vazios!', 'Atenção')
elif check_var.get() == 'off':
Messagebox.show_info('Confirme a caixa!', 'Atenção')
else:
if senha_cadastro.get() != confirmar_senha_cadastro.get():
Messagebox.show_info('Atenção SENHAS não correspondem!', 'Atenção')
return
if email_cadastro.get() != confirmar_email_cadastro.get():
Messagebox.show_info('Atenção E-MAIL não correspondem!', 'Atenção')
return
else:
server = '(local)'
database = 'MuOnline'
username = 'sa'
password = '123456'
driver = '{SQL Server}'
conn = pyodbc.connect(
'DRIVER=' + driver + ';SERVER=' + server + ';DATABASE=' + database + ';UID=' + username + ';PWD=' +
password)
cursor = conn.cursor()
# Executar a consulta SQL
cursor.execute("SELECT * FROM MEMB_INFO WHERE memb___id = ?", (nick,))
# Obter o resultado da consulta
resultado = cursor.fetchone()
# Verificar se o resultado é nulo
if resultado is not None:
Messagebox.show_error(f'Atenção o nick {nick} já existe!', 'Atenção')
else:
# Define a instrução SQL para inserir um novo registro na tabela MEMB_INFO
sql = "INSERT INTO MEMB_INFO (memb___id, memb__pwd, memb_name, mail_addr, sno__numb, bloc_code, " \
"ctl1_code) VALUES (?, ?, ?, ?, ?, ?, ?)"
# Define os valores a serem inseridos
values = (nick, int(senha), nome, email, telefone, '0', '0')
# Executa a instrução SQL com os valores fornecidos
cursor.execute(sql, values)
# Confirma as alterações no banco de dados
conn.commit()
conn.close()
Messagebox.ok('Cadastro realizado com sucesso!', 'Parabéns')
nome_cadastro.delete(0, tb.END)
nick_cadastro.delete(0, tb.END)
senha_cadastro.delete(0, tb.END)
confirmar_senha_cadastro.delete(0, tb.END)
email_cadastro.delete(0, tb.END)
confirmar_email_cadastro.delete(0, tb.END)
cadastro_telefone.delete(0, tb.END)
person_id.delete(0, tb.END)
nome_cadastro.focus()
# Validar máximo de caracteres
def validar_entrada(valor):
if len(valor) > 10:
return False
else:
return True
# Validar máximo de caracteres para email
def validar_email(valor):
if len(valor) > 50:
return False
else:
return True
# Validar máximo de caracteres para personal Id
def validar_id(valor):
if len(valor) > 7:
return False
else:
return True
# Validar máximo de caracteres para telefone
def validar_tel(valor):
if len(valor) > 11:
return False
else:
return True
# Criando Labels
tb.Label(master=cadastro, text='Nome').grid(column=0, row=0, pady=10, sticky="e")
tb.Label(master=cadastro, text='Nick').grid(column=0, row=1, pady=10, sticky="e")
tb.Label(master=cadastro, text='Senha').grid(column=0, row=2, pady=10, sticky="e")
tb.Label(master=cadastro, text='Confirmar Senha').grid(column=0, row=3, pady=10, sticky="e")
tb.Label(master=cadastro, text='E-mail').grid(column=0, row=4, pady=10, sticky="e")
tb.Label(master=cadastro, text='Confirmar E-mail').grid(column=0, row=5, pady=10, sticky="e")
tb.Label(master=cadastro, text='Telefone').grid(column=0, row=6, pady=10, sticky="e")
tb.Label(master=cadastro, text='Personal Id').grid(column=0, row=7, pady=10, sticky="e")
# Checar a variavel
check_var = tb.StringVar()
check_var.set("off")
# Criando Entradas
nome_cadastro = tb.Entry(master=cadastro, validate="key", width=30)
nick_cadastro = tb.Entry(master=cadastro, validate="key", width=30)
senha_cadastro = tb.Entry(master=cadastro, validate="key", show='*', width=30)
confirmar_senha_cadastro = tb.Entry(master=cadastro, validate="key", show='*', width=30)
email_cadastro = tb.Entry(master=cadastro, validate="key", width=30)
confirmar_email_cadastro = tb.Entry(master=cadastro, validate="key", width=30)
cadastro_telefone = tb.Entry(master=cadastro, validate="key", width=30)
person_id = tb.Entry(master=cadastro, validate="key", width=30)
checkbox = tb.Checkbutton(master=cadastro, text="Não sou robo!", variable=check_var, onvalue="on", offvalue="off")
# Criando Botão
button = tb.Button(master=cadastro, text="CADASTRA-SE", command=comparacao)
# Confirgurando Coluna e linha das entradas
nome_cadastro.grid(column=1, row=0, padx=10, pady=10)
nick_cadastro.grid(column=1, row=1, padx=10, pady=10)
senha_cadastro.grid(column=1, row=2, padx=10, pady=10)
confirmar_senha_cadastro.grid(column=1, row=3, padx=10, pady=10)
email_cadastro.grid(column=1, row=4, padx=10, pady=10)
confirmar_email_cadastro.grid(column=1, row=5, padx=10, pady=10)
cadastro_telefone.grid(column=1, row=6, padx=10, pady=10)
person_id.grid(column=1, row=7, padx=10, pady=10)
checkbox.grid(column=0, row=8, columnspan=2, padx=10, pady=10)
button.grid(column=0, row=9, columnspan=2, padx=10, pady=10)
# Configurando validação de maximo de caracteres
nome_cadastro.configure(validatecommand=(nome_cadastro.register(validar_entrada), "%P"))
nick_cadastro.configure(validatecommand=(nick_cadastro.register(validar_entrada), "%P"))
senha_cadastro.configure(validatecommand=(senha_cadastro.register(validar_entrada), "%P"))
confirmar_senha_cadastro.configure(validatecommand=(confirmar_senha_cadastro.register(validar_entrada), "%P"))
email_cadastro.configure(validatecommand=(email_cadastro.register(validar_email), "%P"))
confirmar_email_cadastro.configure(validatecommand=(confirmar_email_cadastro.register(validar_email), "%P"))
cadastro_telefone.configure(validatecommand=(cadastro_telefone.register(validar_tel), "%P"))
person_id.configure(validatecommand=(person_id.register(validar_id), "%P"))
# Criando botão para menubutton
menu_botao = tb.Menubutton(app, text=' Selecione o tema ')
menu_botao.pack(padx=15, pady=15, anchor="e")
# Criando o menu de theme
inserir_menu = tb.Menu(menu_botao)
# Add itens no saida do menubutton
theme_var = tb.StringVar()
# Checando todos os temas e inserido na função changer
for t in style.theme_names():
inserir_menu.add_radiobutton(label=t, variable=theme_var, command=lambda t=t: changer(t))
menu_botao['menu'] = inserir_menu
app.mainloop()