Python 用户登录系统,包括用户名和密码
如何检查登录和密码条目,如果正确,将打开新选项卡。如果条目不正确,将显示错误消息。用户还应该能够注册一个帐户Python 用户登录系统,包括用户名和密码,python,tkinter,Python,Tkinter,如何检查登录和密码条目,如果正确,将打开新选项卡。如果条目不正确,将显示错误消息。用户还应该能够注册一个帐户 from tkinter import * import sqlite3 import tkinter import time root = Tk() root.title("Sale System") root.geometry("500x500") root.configure(background='grey') Label(root, text="Checkout Syst
from tkinter import *
import sqlite3
import tkinter
import time
root = Tk()
root.title("Sale System")
root.geometry("500x500")
root.configure(background='grey')
Label(root, text="Checkout System", background='grey').grid(row=0, column=1)
Label(root, text="Time:", background='grey').grid(row=1, column=1)
def clock():
t=time.strftime('%I:%M:%S',time.localtime())
if t!='':
labeltime.config(text=t)
root.after(100,clock)
labeltime=Label(root, text="Current System Time", background='grey')
labeltime.grid(row=1, column=1)
time1 = clock()
def new_winF(): #Opens registration confirmation window
newwin = Toplevel(root)
display = Label(newwin, text="Your account has been created. Please log in with your new details. This window may be closed.")
display.pack()
Label(root, text="Username:", background='grey').grid(row=3, column=0, sticky=W)
Label(root, text="Password:", background='grey').grid(row=4, column=0, sticky=W)
e1 = Entry(root)
e1.grid(row=3, column=1)
if e1 == 'yes':
command =new_winF
e2 = Entry(root)
e2.grid(row=4, column=1)
LoginButton = Button(root, text="Login", width=10)
LoginButton.grid(row=5, column=1)
RegisterButton = Button(root, text ="Register", command =new_winF, width=10)
RegisterButton.grid(row=6, column=1)
root.mainloop()
有太多的变化来描述它 顺便说一句:我使用
Frame
对小部件进行分组,之后我可以显示一个框架(pack()
/grid()
),隐藏另一个框架(pack\u-forget()
/grid\u-forget()
)。这种方法有更多有用的例子
import tkinter as tk
import time
# --- functions ---
def clock():
txt = time.strftime('%I:%M:%S', time.localtime())
label_time.config(text=txt)
root.after(1000, clock)
def on_register(): #Opens registration confirmation window
newwin = tk.Toplevel(root)
display = tk.Label(newwin, text="\nYour account has been created.\nPlease log in with your new details.\n\nThis window may be closed.")
display.pack()
tk.Button(newwin, text='Close', command=newwin.destroy).pack()
def on_login(): #Opens registration confirmation window
newwin = tk.Toplevel(root)
if e1.get() == 'admin' and e2.get() == '12345':
display = tk.Label(newwin, text="\nYour are logged in.\n\nThis window may be closed.")
display.pack()
main_page.pack_forget() # hide it
other_page.pack() # show it
else:
display = tk.Label(newwin, text="\nWrong login or password.\n\nThis window may be closed.")
display.pack()
tk.Button(newwin, text='Close', command=newwin.destroy).pack()
def create_main_page():
global label_time
global e1
global e2
frame = tk.Frame(root)
#frame.pack() # don't show it
tk.Label(frame, text="Checkout System", background='grey').grid(row=0, column=1)
tk.Label(frame, text="Time:", background='grey').grid(row=1, column=1)
label_time = tk.Label(frame, text="Current System Time", background='grey')
label_time.grid(row=1, column=1)
clock()
tk.Label(frame, text="Username:", background='grey').grid(row=3, column=0, sticky='w')
tk.Label(frame, text="Password:", background='grey').grid(row=4, column=0, sticky='w')
e1 = tk.Entry(frame)
e1.grid(row=3, column=1)
e2 = tk.Entry(frame)
e2.grid(row=4, column=1)
login_button = tk.Button(frame, text="Login", width=10, command=on_login)
login_button.grid(row=5, column=1)
register_button = tk.Button(frame, text="Register", width=10, command=on_register)
register_button.grid(row=6, column=1)
return frame
def create_other_page():
frame = tk.Frame(root)
#frame.pack() # don't show it
tk.Label(frame, text="You are on other page", background='grey').grid(row=0, column=1)
return frame
# ---- main ---
root = tk.Tk()
root.title("Sale System")
root.geometry("500x500")
root.configure(background='grey')
main_page = create_main_page()
main_page.pack() # show it
other_page = create_other_page()
#other_page.pack() # don't show it yet
root.mainloop()
创建一个函数并将其绑定到登录按钮以检查您的输入。此处您的用户名输入应为
yes
密码no
如果匹配,则将弹出窗口,如果不匹配,mesagebox将弹出窗口提醒用户
from tkinter import *
import sqlite3
from tkinter import messagebox
import tkinter
import time
root = Tk()
root.title("Sale System")
root.geometry("500x500")
root.configure(background='grey')
Label(root, text="Checkout System", background='grey').grid(row=0, column=1)
Label(root, text="Time:", background='grey').grid(row=1, column=1)
def clock():
t=time.strftime('%I:%M:%S',time.localtime())
if t!='':
labeltime.config(text=t)
root.after(100,clock)
labeltime=Label(root, text="Current System Time", background='grey')
labeltime.grid(row=1, column=1)
time1 = clock()
def new_winF(): #Opens registration confirmation window
newwin = Toplevel(root)
display = Label(newwin, text="Your account has been created. Please log in with your new details. This window may be closed.")
display.pack()
Label(root, text="Username:", background='grey').grid(row=3,column=0,sticky=W)
Label(root, text="Password:", background='grey').grid(row=4, column=0,
sticky=W)
def login_fun():
if e1.get() == "yes" and e2.get() == "no":
new_winF()
else:
messagebox.showerror("error","try agian boy")
e1 = Entry(root)
e1.grid(row=3, column=1)
e2 = Entry(root)
e2.grid(row=4, column=1)
LoginButton = Button(root, text="Login", width=10, command=login_fun)
LoginButton.grid(row=5, column=1)
RegisterButton = Button(root, text ="Register", command =new_winF, width=10)
RegisterButton.grid(row=6, column=1)
root.mainloop()
将所有函数放在
root=Tk()
之前,以使代码更具可读性。现在我只看到了mess.BTW:要从Entry
中获取文本,您必须使用e1.get()
,但程序不会等到您将文本放入条目中(不是input()
检查“Enter”)并检查是否e1='yes':
直接在e1=Entry(root)
之后检查e1.get()
will-gives-empty string您已经告诉了我们您想要什么,但没有解释您需要什么帮助。您的问题是什么?形式为“为什么我的代码不起作用?”的问题在这里是离题的,您需要问一些更具体的问题。这很好。谢谢在代码旁边贴上标记。供将来参考很好的解决方案。谢谢: