python - 从 sqlite3 数据库中检索保存的生成密码到 gen。登录时输入密码,但我卡住了
问题描述
这是我第一次这样做,我试图在输入正确的详细信息后显示保存在 mysqlite3 数据库中的生成密码以显示在 Gen. 密码,但是,由于某种原因,我不断收到不同类型的错误,甚至搜索了不同的来源,但没有运气显示它,任何人都可以帮我找到问题或缺少什么吗?
from tkinter import *
import tkinter.messagebox as tkMessageBox
import sqlite3
from random import randint
root = Tk()
root.title("Random password generator")
width = 640
height = 634
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width/3) - (width/3)
y = (screen_height/3) - (height/3)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)
USERNAME = StringVar()
PASSWORD = StringVar()
GENPASS = StringVar()
def Database():
global conn, cursor
conn = sqlite3.connect("db_member.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS `member` (mem_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username TEXT, password TEXT, genpass TEXT, lastname TEXT)")
def LoginForm():
global LoginFrame, lbl_result1, genpass
LoginFrame = Frame(root)
LoginFrame.pack(side=TOP, pady=80)
lbl_username = Label(LoginFrame, text="Word:", font=('arial', 18), bd=18)
lbl_username.grid(row=1)
lbl_password = Label(LoginFrame, text="Password:", font=('arial', 18), bd=18)
lbl_password.grid(row=2)
lbl_genpass = Label(LoginFrame, text="Gen. Password:", font=('arial', 18), bd=18)
lbl_genpass.grid(row=3)
lbl_result1 = Label(LoginFrame, text="", font=('arial', 18))
lbl_result1.grid(row=4, columnspan=2)
username = Entry(LoginFrame, font=('arial', 15), textvariable=USERNAME, width=25)
username.grid(row=1, column=1)
password = Entry(LoginFrame, font=('arial', 15), textvariable=PASSWORD, width=25)
password.grid(row=2, column=1)
genpass = Entry(LoginFrame, font=('arial', 15), width=25)
genpass.grid(row=3, column=1)
btn_login = Button(LoginFrame, text="Show password", font=('arial', 18), width=35, command=Login)
btn_login.grid(row=5, columnspan=2, pady=20)
lbl_register = Label(LoginFrame, text="Register", fg="Blue", font=('arial', 12))
lbl_register.grid(row=0, sticky=W)
lbl_register.bind('<Button-1>', ToggleToRegister)
def RegisterForm():
global RegisterFrame, lbl_result2
RegisterFrame = Frame(root)
RegisterFrame.pack(side=TOP, pady=40)
my_password=chr(randint(33,126))
def new_rand():
genpass.delete(0, END)
pw_length = int(my_entry.get())
my_password=""
for x in range(pw_length):
my_password+=chr(randint(33,126))
genpass.insert(0, my_password)
lbl_username = Label(RegisterFrame, text="Word:", font=('arial', 18), bd=18)
lbl_username.grid(row=1)
lf=Label(RegisterFrame, text="Number of password:", font=('arial', 10), bd=18)
lf.grid(row=2)
lbl_password = Label(RegisterFrame, text="Password:", font=('arial', 18), bd=18)
lbl_password.grid(row=3)
lbl_genpass = Label(RegisterFrame, text="Gen. Password:", font=('arial', 18), bd=18)
lbl_genpass.grid(row=4)
lbl_result2 = Label(RegisterFrame, text="", font=('arial', 18))
lbl_result2.grid(row=6, columnspan=2)
username = Entry(RegisterFrame, font=('arial', 20), textvariable=USERNAME, width=15)
username.grid(row=1, column=1)
my_entry = Entry(RegisterFrame, text="", font=("Helvetica", 20), width=15)
my_entry.grid(row=2, column=1)
password = Entry(RegisterFrame, font=('arial', 20), textvariable=PASSWORD, width=15)
password.grid(row=3, column=1)
genpass = Entry(RegisterFrame, font=('arial', 15), width=25)
genpass.grid(row=4, column=1)
my_btn = Button(RegisterFrame, text="Generate password",bg="grey", fg="white", font=('arial', 18), width=35, command=new_rand)
my_btn.grid(row=7, columnspan=2, pady=20)
btn_login = Button(RegisterFrame, text="Register", font=('arial', 18), width=35, command=Register)
btn_login.grid(row=8, columnspan=2, pady=20)
lbl_login = Label(RegisterFrame, text="Word", fg="Blue", font=('arial', 12))
lbl_login.grid(row=0, sticky=W)
lbl_login.bind('<Button-1>', ToggleToLogin)
lbl_genpass = Label(RegisterFrame, text="Gen. Password:", font=('arial', 18), bd=18)
lbl_genpass.grid(row=4)
def ToggleToLogin(event=None):
RegisterFrame.destroy()
LoginForm()
def ToggleToRegister(event=None):
LoginFrame.destroy()
RegisterForm()
def Register():
Database()
if USERNAME.get() == "" or PASSWORD.get() == "" or GENPASS.get():
lbl_result2.config(text="Please complete the required fields!", fg="orange")
else:
cursor.execute("SELECT * FROM `member` WHERE `username` = ?", (USERNAME.get()))
if cursor.fetchone() is not None:
lbl_result2.config(text="Word is already taken", bg="red",fg="white")
else:
cursor.execute("INSERT INTO `member` (username, password, genpass) VALUES(?, ?, ?)", (str(USERNAME.get()), str(PASSWORD.get()), str(GENPASS.get())))
conn.commit()
USERNAME.set("")
PASSWORD.set("")
GENPASS.set("")
lbl_result2.config(text="Successfully Created!", fg="green")
cursor.close()
conn.close()
def Login():
Database()
if USERNAME.get == "" or PASSWORD.get =="":
lbl_result1.config(text="Please complete the required field!", fg="orange")
else:
cursor.execute("SELECT * FROM `member` WHERE `username` = ? and `password` = ?", (USERNAME.get(), PASSWORD.get()))
if cursor.fetchone() is not None:
lbl_result1.config(text="Display the generated password registered", bg="green", fg="white")
else:
lbl_result1.config(text="Invalid word", fg="white", bg="red")
LoginForm()
if __name__ == '__main__':
root.mainloop()
解决方案
推荐阅读
- weblogic - 用于 Weblogic 安全领域角色创建和添加条件的 wlst 命令
- javascript - 为什么这段代码没有按应有的方式运行。请解释
- c - 三元组问题:解决它并消除错误
- firebase - 规则 Firestore,从父级获取资源?
- flutter - 具有命名参数的构造函数设置私有变量后验证
- c++ - 调试时如何在 VS Code 的集成终端中查看 C 程序的输出
- jquery - 未捕获的类型错误:this._addClass 不是产品添加/编辑页面中的函数
- java - Android Apk 中暴露的 Google Geo location Api 密钥
- jquery - 我在哪里可以找到 getJSON 中 URL 路径的位置
- selenium - 使用 Chrome 时放大后硒元素单击不起作用