Python tkinter庫(kù)實(shí)現(xiàn)登錄注冊(cè)基本功能
tkinter庫(kù)作為python的標(biāo)準(zhǔn)庫(kù)之一,它的功能性十分強(qiáng)大,下面我將使用tkinter庫(kù)制作一個(gè)簡(jiǎn)易的注冊(cè)登錄窗口(很難看就是了)。
一、各種組件的布局
制作之前需要大致明白各個(gè)窗體的大致位置,登錄注冊(cè)嘛 自然就要有用戶名和密碼的標(biāo)簽以及需要輸入文字的文本框。
'創(chuàng)建用戶名的標(biāo)簽' Label(root,text='用戶名',width = 6,font=('華文行楷',20)).place(x=1,y=1) '用戶名后面的輸入框' user = Entry(root,width=20,textvariable = user1).place(x=100,y=1) '創(chuàng)建密碼的標(biāo)簽' Label(root,text = '密碼',width = 6,font=('華文行楷',20)).place(x=1,y=45) '密碼后面的輸入框' password = Entry(root,width =20,textvariable = password1 ).place(x=100,y=45) '創(chuàng)建兩個(gè)按鈕 用command參數(shù)使得在點(diǎn)擊按鈕時(shí)運(yùn)行對(duì)應(yīng)的函數(shù)' Button(root,text = '登錄',width = 8,command= login).place(x=40,y=100) Button(root,text = '注冊(cè)',width = 8,command=zhuce).place(x=110,y=100)
在這個(gè)基礎(chǔ)上我還加了登錄 注冊(cè)兩個(gè)按鈕 用于后面的登錄注冊(cè)的操作
二、制作過(guò)程中的理解
如果想要做到登錄注冊(cè)的操作,首先需要有一個(gè)儲(chǔ)存用戶名和密碼的東西,登錄時(shí)輸入的文本如果在這個(gè)東西里面說(shuō)明用戶名密碼都正確 就能完成登錄,注冊(cè)時(shí)輸入的文本也能夠儲(chǔ)存在里面,要做到這些,字典是個(gè)不二選擇,因?yàn)樗兄?lsquo;鍵值:內(nèi)容’的結(jié)構(gòu),非常適合儲(chǔ)存用戶名和密碼
users_pw = {'admin':'123456'} #一個(gè)空字典 默認(rèn)用戶名密碼為admin 123456
創(chuàng)建一個(gè)空字典,我們可以設(shè)置一組數(shù)據(jù)作為默認(rèn)用戶名密碼。
創(chuàng)建了一個(gè)儲(chǔ)存數(shù)據(jù) 的字典還不夠,我們要做到登錄注冊(cè)的效果還需要’登錄‘,’注冊(cè)‘這兩個(gè)按鈕的作用,當(dāng)我們點(diǎn)擊注冊(cè)按鈕時(shí),程序會(huì)捕捉到這個(gè)操作,并且執(zhí)行相應(yīng)的操作。
'鼠標(biāo)點(diǎn)擊登錄時(shí)會(huì)執(zhí)行的操作' def login(): if users in users_pw : if passwords == users_pw[users]: print('登錄成功') else: print('登錄失敗') else: print('沒(méi)有該用戶')
Button(root,text = '登錄',width = 8,command= login).place(x=40,y=100) Button(root,text = '注冊(cè)',width = 8,command=zhuce).place(x=110,y=100)
注冊(cè)同理 當(dāng)然這段代碼是執(zhí)行不了的只是提供個(gè)思路 具體后面會(huì)說(shuō) 通過(guò)按鈕Button方法中的command參數(shù)我們就可以在點(diǎn)擊按鈕時(shí)調(diào)用我們事先寫好的函數(shù)。
三、制作過(guò)程中遇到的難點(diǎn)
在制作過(guò)程中遇到過(guò)一些難題,比如如何獲取文本框中用戶輸入的東西。
四、解決問(wèn)題的方法
我查閱了很多資料,終于找到了方法,就是在Entry控件中的textvariable參數(shù) 它可以把這個(gè)輸入框?qū)ο蟮哪硞€(gè)屬性綁定給一個(gè)變量 然后通過(guò)<變量>.StringVar() 方法獲取輸入框中的內(nèi)容。
users = user1.get() #獲取user1中存儲(chǔ)的文本框中的內(nèi)容 user = Entry(root,width=20,textvariable = user1).place(x=100,y=1) #textvariable參數(shù)的使用是把文本框中的內(nèi)容傳遞給變量的關(guān)鍵
這個(gè)難題解決后,之后的工作也就簡(jiǎn)單了,只需要把每個(gè)控件的位置,參數(shù)調(diào)整一下就可以了。
完整代碼以及運(yùn)行結(jié)果如下:
#place布局.py from tkinter import * #導(dǎo)入tkinter庫(kù) users_pw = {'admin':'123456'} #一個(gè)空字典 默認(rèn)用戶名密碼為admin 123456 '點(diǎn)擊登錄按鈕執(zhí)行的函數(shù)' def login(): def close(): window.destroy() users = user1.get() passwords = password1.get() if users in users_pw : if passwords == users_pw[users]: window = Tk() window.title ('恭喜!') window.geometry('200x180+200+200') label = Label(window,text = '登錄成功',font=('華文行楷',20)) label.pack() button = Button(window,text ='關(guān)閉',font=('華文行楷',20),command=close) button.pack() else: window = Tk() window.title('錯(cuò)誤!') window.geometry('200x180+200+200') label = Label(window,text='登錄失敗',font=('華文行楷',20)) label.pack() button = Button(window,text='關(guān)閉',font=('華文行楷',20), command=close) button.pack() else: print('沒(méi)有該用戶') '點(diǎn)擊注冊(cè)按鈕執(zhí)行的函數(shù)' def zhuce(): def close(): window.destroy() users = user1.get() #獲取user1中存儲(chǔ)的文本框中的內(nèi)容 passwords = password1.get() #同上 if (users =='') or (passwords == ''): window = Tk() window.title('錯(cuò)誤!') window.geometry('200x180+200+200') label = Label(window, text='注冊(cè)失敗', font=('華文行楷', 20)) label.pack() button = Button(window, text='關(guān)閉', font=('華文行楷', 20), command=close) button.pack() elif users in users_pw: window = Tk() window.title('錯(cuò)誤!') window.geometry('200x180+200+200') label = Label(window, text='注冊(cè)失敗已有此用戶名', font=('華文行楷', 20)) label.pack() button = Button(window, text='關(guān)閉', font=('華文行楷', 20), command=close) button.pack() else: users_pw[users] = passwords window = Tk() window.title('恭喜!') window.geometry('200x180+200+200') label = Label(window, text='注冊(cè)成功', font=('華文行楷', 20)) label.pack() button = Button(window, text='關(guān)閉', font=('華文行楷', 20), command=close) button.pack() '窗口創(chuàng)建' root = Tk() root.title('登錄') root.geometry('300x300') root.config(bg = '#ffcc00') '創(chuàng)建兩個(gè)文本輸入框 并用StringVar()把文本框中的內(nèi)容跟user1 password1綁定' user1 = StringVar () password1 =StringVar() Label(root,text='用戶名',width = 6,font=('華文行楷',20)).place(x=1,y=1) user = Entry(root,width=20,textvariable = user1).place(x=100,y=1) #textvariable參數(shù)的使用是把文本框中的內(nèi)容傳遞給變量的關(guān)鍵 Label(root,text = '密碼',width = 6,font=('華文行楷',20)).place(x=1,y=45) password = Entry(root,width =20,textvariable = password1 ).place(x=100,y=45) '創(chuàng)建兩個(gè)按鈕 用command參數(shù)使得在點(diǎn)擊按鈕時(shí)運(yùn)行對(duì)應(yīng)的函數(shù)' Button(root,text = '登錄',width = 8,command= login).place(x=40,y=100) Button(root,text = '注冊(cè)',width = 8,command=zhuce).place(x=110,y=100) root.mainloop() #顯示窗口
到此這篇關(guān)于Python tkinter庫(kù)實(shí)現(xiàn)登錄注冊(cè)基本功能的文章就介紹到這了,更多相關(guān)Python tkinter登錄注冊(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python可視化目標(biāo)檢測(cè)框的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python可視化目標(biāo)檢測(cè)框的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Python使用Excel將數(shù)據(jù)寫入多個(gè)sheet
這篇文章主要介紹了Python使用Excel將數(shù)據(jù)寫入多個(gè)sheet,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05修復(fù) Django migration 時(shí)遇到的問(wèn)題解決
本篇文章主要介紹了修復(fù) Django migration 時(shí)遇到的問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python自定義聚合函數(shù)merge與transform區(qū)別詳解
這篇文章主要介紹了Python自定義聚合函數(shù)merge與transform區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05