大家好!我在tkinter中编写了一个简单的程序。本质上是一个带有数据库(sqlite3)的注册程序。
所以现在,在我看来,它看起来不太好。是的,有人建议我重构代码,但我不知道该怎么做。虽然我理解OOP的本质。
代码:
from tkinter import Tk, Label, Entry, Button, StringVar, Toplevel, messagebox
import sqlite3
def check_user(login, password):
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY,
login TEXT,
password TEXT)''')
c.execute("SELECT login, password FROM users WHERE login = ?", (login, ))
data_select_user = c.fetchone()
data_submit_uesr = (login, password)
if data_select_user == data_submit_uesr:
messagebox.showinfo(title="Welcome!", message="It's Ok!")
else:
messagebox.showerror(title="REGISTER!", message="REGISTER PLEASE!")
conn.commit()
conn.close()
def insert_user(login, password):
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY,
login TEXT,
password TEXT)''')
c.execute("INSERT INTO users (login, password) VALUES (?,?)", (login, password))
conn.commit()
conn.close()
def submit():
login = login_var.get()
password = password_var.get()
# print('its ok')
check_user(login, password)
login_var.set("")
password_var.set("")
class root2:
def __init__(self):
super().__init__()
def submit2():
login = login_var2.get()
password = password_var2.get()
insert_user(login, password)
login_var2.set("")
password_var2.set("")
root2 = Toplevel(root)
root2.title("Register Form")
def call_func2():
close2()
submit2()
def close2():
root2.destroy()
login_var2 = StringVar()
password_var2 = StringVar()
Label(root2, text="Login:").grid(row=0, column=0)
Entry(root2, textvariable=login_var2).grid(row=0, column=1)
Label(root2, text="Password:").grid(row=1, column=0)
Entry(root2, textvariable=password_var2, show='*').grid(row=1,
column=1)
Button(root2, text="Submit", command=call_func2).grid(row=2, column=1)
root = Tk()
root.title("Login Form")
root.resizable(False, False)
login_var = StringVar()
password_var = StringVar()
def click():
root = root2()
def close():
root.destroy()
def call_func():
# close()
submit()
Label(root, text="Login:").grid(row=0, column=0)
Entry(root, textvariable=login_var).grid(row=0, column=1)
Label(root, text="Password:").grid(row=1, column=0)
Entry(root, textvariable=password_var, show='*').grid(row=1, column=1)
Button(root, text="Submit", command=call_func).grid(row=2, column=1)
Button(root, text="Create new account", command=click).grid(row=3,
column=1)
root.mainloop()