Задать вопрос
@k4min

Не работает регистрация. Как исправить?

До какого-то момента работала регистрация с базой данных. Сейчас не работает. Не понимаю в чем ошибка
from PIL import Image, ImageTk
import tkinter as tk
from tkinter import messagebox
import _sqlite3 as s
import random

password_visible = True


# Функция Входа

def enter(event):
    usr_login = login1_entry.get() # Считываем введённый логин
    usr_pass = password1_entry.get() # Считываем введённый пароль
    if usr_login != login:
        messagebox.showerror("Ошибка", "Логин не найден!") # messagebox.show(error, warnin, info) - выводит предупреждение как в windows
    else:
        if usr_pass != password:
            messagebox.showerror("Ошибка", "Неправильный пароль!")
        else:
            messagebox.showinfo("Успех", "Добро пожаловать, " + usr_login + "!")
            game()

# Функция Рофла
def rofl(event):
    messagebox.showinfo("Информация", "Вспомните")

# Функция eye
def eye(event):
    global password_visible
    if password_visible == True:
        password_entry.configure(show="")
        eye_label.configure(image=eye_close)
        password_visible = False
    else:
        password_entry.configure(show="*")
        eye_label.configure(image=eye_open)
        password_visible = True

# Функция Регистрации
def reg(event):
    def reg_submit():
        u_name = name_entry.get()
        u_surname = surname_entry.get()
        u_login = login_entry.get()
        u_password = password_entry.get()
        cur = users.cursor()
        cur.execute("""INSERT INTO users(name, surname, login, password) VALUES ("%s", "%s", "%s", "%s")""" % (u_name, u_surname, u_login, u_password))
        users.commit() # сохраняем БД
        window.deiconify() # возращаемся к Авторизации
        reg_window.destroy()
        
    window.withdraw() # скрываем главное окно
    reg_window = tk.Toplevel(window) # создаём второе окно
    # Не менять размер окна
    reg_window.resizable(0, 0)
    # Не перемещать окно
    reg_window.overrideredirect(0)
    # Окно по центру экрана
    m_w = reg_window.winfo_screenwidth()
    m_h = reg_window.winfo_screenheight()
    width = 230
    height = 170
    x = (m_w - width) / 2
    y = (m_h - height) / 2
    reg_window.geometry("%dx%d+%d+%d" % (width, height, x, y))

    # labels
    # Заголовок Регистрации
    title_label =tk.Label(reg_window, text="Регистрация", font=("Arial", 16))
    title_label.grid(row=0, column=0, columnspan=2)
    # Имя
    name_label = tk.Label(reg_window, text="Имя", font=("Arial", 12))
    name_label.grid(row=1, column=0)
    # Фамилия
    surname_label = tk.Label(reg_window, text="Фамилия", font=("Arial", 12))
    surname_label.grid(row=2, column=0)
    # Логин
    login_label = tk.Label(reg_window, text="Логин", font=("Arial", 12))
    login_label.grid(row=3, column=0)
    # Пароль
    password_label = tk.Label(reg_window, text="Пароль", font=("Arial", 12))
    password_label.grid(row=4, column=0)

    # entry
    # Строка Имя
    name_entry = tk.Entry(reg_window, width=25)
    name_entry.grid(row=1, column=1)
    # Строка Фамилия
    surname_entry = tk.Entry(reg_window, width=25)
    surname_entry.grid(row=2, column=1)
    # Строка Логин
    login_entry = tk.Entry(reg_window, width=25)
    login_entry.grid(row=3, column=1)
    # Строка пароль
    password_entry = tk.Entry(reg_window, width=25)
    password_entry.grid(row=4, column=1)

    #Кнопка
    submit_button = tk.Button(reg_window, text="Регистрация", font=("Arial", 12), command=reg_submit)
    submit_button.grid(row=5, column=0, columnspan=2)
    
# Работа с БД (База Данных)
users = s.connect("Top_secret.db") # прописываем файл БД
c = users.cursor() # создаём курсор БД
c.execute("""CREATE TABLE IF NOT EXISTS users(name, surname, login, password)""")

# Окно    
window = tk.Tk()
window.title("Авторизация")

# Не менять размер окна
window.resizable(0, 0)
# Не перемещать окно
window.overrideredirect(0)

# Окно по центру экрана
m_w = window.winfo_screenwidth()
m_h = window.winfo_screenheight()
width = 280
height = 120
x = (m_w - width) / 2
y = (m_h - height) / 2
window.geometry("%dx%d+%d+%d" % (width, height, x, y))

# Заголовок Авторизация
title_label = tk.Label(window, text="Авторизация", font=("Arial", 20))
title_label.grid(row=0, column=0, columnspan=3)
# Текст логина
login_label = tk.Label(window, text="Логин", font=("Arial", 15))
login_label.grid(row=1, column=0)
# Текст пароля
password_label = tk.Label(window, text="Пароль", font=("Arial", 15))
password_label.grid(row=2, column=0)
# Строка логин
login1_entry = tk.Entry(window, width=20)
login1_entry.grid(row=1, column=1)
login1_entry.focus()
# Строка пароля
password1_entry = tk.Entry(window, width=20, show="*")
password1_entry.grid(row=2, column=1)
# Глаз
raw_eye_open = Image.open("img/eye.png")
eye_open = ImageTk.PhotoImage(raw_eye_open)
raw_eye_close = Image.open("img/eye2.png")
eye_close = ImageTk.PhotoImage(raw_eye_close)
eye_label = tk.Label(window, image=eye_open, cursor="hand2")
eye_label.grid(column=2, row=3)
eye_label.bind("<Button-1>", eye)
# Картинка Вход
raw_img = Image.open("img/enter.png")
img = ImageTk.PhotoImage(raw_img)
img_label = tk.Label(window, image=img, cursor="hand2")
img_label.grid(column=2, row=1, rowspan=2)
img_label.bind("<Button-1>", enter)

# Ссылки
# Забыли пароль
forget_label = tk.Label(window, text="Забыли пароль?", font=("Arial", 10), cursor="hand2")
forget_label.grid(row=3, column=0)
forget_label.bind("<Button-1>", rofl) # рофл
# Регистрация
reg_label = tk.Label(window, text="Регистрация", font=("Arial", 10), cursor="hand2")
reg_label.grid(row=3, column=1)
reg_label.bind("<Button-1>", reg)

window.mainloop()
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы