教你用Python的字典,創(chuàng)建tkinter的登錄頁(yè)面(可注冊(cè)用戶密碼,已實(shí)測(cè))
網(wǎng)上找了很久,也沒(méi)找到好一點(diǎn)的代碼,索性也就自己寫(xiě)了……
運(yùn)行沒(méi)什么問(wèn)題
唯一的缺點(diǎn)就是,退出后,會(huì)恢復(fù)默認(rèn)值,所以賬戶密碼什么的,得重新注冊(cè)了……
不過(guò)好在沒(méi)什么具體影響,無(wú)傷大雅)……
下面話不多說(shuō),直接放源代碼,拿走不謝,求好評(píng)點(diǎn)贊收藏(因?yàn)槊?,所以暫時(shí)不回復(fù)提問(wèn),謝謝!)^v^
########################################################
# 調(diào)用tkinter庫(kù)
import tkinter as tk
#調(diào)用彈窗頁(yè)面
import tkinter.messagebox
#定義一個(gè)字典存放用戶和密碼:
global users
#默認(rèn)字典登錄用戶和密碼
users={"dianzan":"123456","a":"a"}
#建立基本一級(jí)界面
def tkint(title, text):
? ? # 建立GUI界面
? ? window = tk.Tk()
? ? window.title("{}".format(title))
? ? window.geometry('1280x720')
? ? #標(biāo)題的建立,代碼如下
? ? var = tk.StringVar()
? ? ul = tk.Label(window, text='{}'.format(text), bg='lavender', font=('行書(shū)', 14), width=50, height=5)
? ? ul.pack()
? ? #定義e2為全局變量,e1是加密,e2是顯示內(nèi)容,var1,var2是獲取到的用戶和密碼字符串變量,pp1,pp2是另外的賦值變量
? ? global e2,e1,var1,var2,pp1,pp2
? ? #用戶輸入框
? ? var1= tk.StringVar()
? ? e2 = tk.Entry(window, show=None,textvariable=var1, font=('Arial',14),width=50)
? ? e2.place(x=360,y=200)
? ? #密碼輸入框
? ? var2= tk.StringVar()
? ? e1 = tk.Entry(window, show='*',textvariable=var2,font=('Arial', 14),width=50)
? ? e1.place(x=360,y=400)
? ? #用戶的文本擺放
? ? lb1=tk.Label(window,text="用戶",bg='white',font=('幼圓', 14), width=6, height=3)
? ? lb1.place(x=290,y=180)
? ? #密碼的文本擺放
? ? lb2=tk.Label(window,text="密碼",bg='white',font=('幼圓', 14), width=6, height=3)
? ? lb2.place(x=290,y=380)
? ? #提示默認(rèn)的密碼和文本
? ? lb2=tk.Label(window,text="默認(rèn)賬戶:dianzan 密碼:123456",bg='lavender',font=('行書(shū)', 14), width=50, height=3)
? ? lb2.place(x=360,y=530)
? ? #自定義登錄點(diǎn)擊事件
? ? def denglu():
? ? ? ? pp1,pp2=var1.get(),var2.get()#將用戶和密碼分別重新賦值給另一個(gè)變量(方便寫(xiě)代碼)
? ? ? ? if pp1 in users and users[pp1]==pp2:
? ? ? ? ? ? tkinter.messagebox.showinfo(title="提示:",message="登錄成功!")
? ? ? ? ? ? print("登陸成功")
? ? ? ? elif pp1=="" or pp2=="":
? ? ? ? ? ? tkinter.messagebox.showinfo(title="提示:",message="請(qǐng)輸入用戶名或者密碼")
? ? ? ? ? ? print("請(qǐng)輸入用戶名或者密碼")
? ? ? ? elif pp1 not in users and(pp1!="" or pp2!=""):
? ? ? ? ? ? tkinter.messagebox.showinfo(title="提示:",message="沒(méi)有此用戶,請(qǐng)注冊(cè)")
? ? ? ? ? ? print("沒(méi)有賬號(hào),請(qǐng)注冊(cè)")
? ? ? ? elif pp1 in users and users[pp1]!=pp2 and(pp1!="" or pp2!=""):
? ? ? ? ? ? tkinter.messagebox.showinfo(title="提示:",message="密碼錯(cuò)誤")
? ? ? ? ? ? print("密碼錯(cuò)誤")
? ? ? ? #清空登錄輸入
? ? ? ? e1.delete("0","end")
? ? ? ? #清空密碼輸入
? ? ? ? e2.delete("0","end")
? ? #登錄按鈕 設(shè)置點(diǎn)擊事件
? ? butsousuo=tk.Button(window,text="登錄",command=denglu,font=('隸書(shū)', 16),activeforeground="pink",
? ? ? ? ? ?activebackground="light blue",pady=8)
? ? butsousuo.place(x=370,y=450)
? ? #注冊(cè)點(diǎn)擊事件
? ? def zhuce():
? ? ? ? pp1,pp2=var1.get(),var2.get()#將用戶和密碼分別重新賦值給另一個(gè)變量(方便寫(xiě)代碼)
? ? ? ? if pp1 in users:
? ? ? ? ? ? tkinter.messagebox.showinfo(title="提示:",message="用戶名已存在,請(qǐng)修改")
? ? ? ? ? ? print("用戶名已存在,請(qǐng)修改")
? ? ? ? elif pp1=="" and pp2=="":
? ? ? ? ? ? ? ? ?tkinter.messagebox.showinfo(title="提示:",message="用戶名和密碼不能為空!")
? ? ? ? ? ? ? ? ?print("用戶名和密碼不能為空!")
? ? ? ? elif pp1!="" and pp2=="":
? ? ? ? ? ? ? ? ?tkinter.messagebox.showinfo(title="提示:",message="密碼不能為空!")
? ? ? ? ? ? ? ? ?print("密碼不能為空!")
? ? ? ? elif pp1=="" and pp2!="":
? ? ? ? ? ? ? ? ?tkinter.messagebox.showinfo(title="提示:",message="用戶名不能為空!")
? ? ? ? ? ? ? ? ?print("用戶名不能為空!")
? ? ? ? elif pp1!="" and pp2=="":
? ? ? ? ? ? ? ? ?tkinter.messagebox.showinfo(title="提示:",message="密碼不能為空!")
? ? ? ? ? ? ? ? ?print("密碼不能為空!")
? ? ? ? elif pp1 not in users and pp1!="":
? ? ? ? ? ? users[pp1]=pp2? #將新用戶和密碼寫(xiě)入字典
? ? ? ? ? ? tkinter.messagebox.showinfo(title="提示:",message="注冊(cè)成功!")
? ? ? ? ? ? print("注冊(cè)成功")
? ? ? ? #清空登錄輸入
? ? ? ? e1.delete("0","end")
? ? ? ? #清空密碼輸入
? ? ? ? e2.delete("0","end")
? ? #注冊(cè)按鈕 設(shè)置點(diǎn)擊事件
? ? butsousuo=tk.Button(window,text="注冊(cè)",command=zhuce,font=('隸書(shū)', 16),activeforeground="pink",
activebackground="light blue",pady=8)
? ? butsousuo.place(x=800,y=450)
? ? #返回窗口頁(yè)面
? ? return window
#設(shè)置窗口框的頁(yè)面文字,窗口里面的標(biāo)題
window = tkint('用戶登錄', '用戶登錄頁(yè)面')
#調(diào)用mainloop函數(shù),開(kāi)始循環(huán)
window.mainloop()
####################################################
然后最終效果是這樣的:







