1. 程式人生 > >Tkinter 簡單使用者登入註冊程式

Tkinter 簡單使用者登入註冊程式

在完成python核心程式設計過程中,第七章第五題要求用Tkinter編寫一個簡單的GUI介面,完成簡單的使用者登入註冊。查詢的過程裡現有的程式碼無法滿足要求,收集資料完成了一個簡單的。可以作為類似題目的模板。

# encoding=utf-8
import time
import hashlib
from Tkinter import *
import tkMessageBox
import tkMessageBox,tkFileDialog
import platform


db = {}

#處理註冊
def newuser(name,pwd):
    while True:
        if
db.has_key(name): tkMessageBox.showinfo(title='失敗', message='already has this name') continue else: break m = hashlib.md5() m.update(pwd) # print m # print m.hexdigest() db[name] = [m.hexdigest(),time.strftime("%Y %m %d %H %M", time.localtime())] tkMessageBox.showinfo(title='成功'
, message='註冊成功') #處理直接登入 def olduser(name,pwd): m = hashlib.md5() m.update(pwd) # print m pwd = m.hexdigest() passwd = db[name][0] if passwd == pwd: tkMessageBox.showinfo(title='成功', message='welcome back'+name) ti = time.strftime("%Y %m %d %H %M", time.localtime()) lis1 = ti.split(' '
) lis2 = db[name][1].split(' ') # print lis1 # print lis2 if lis1[0] == lis2[0]: if lis1[1] == lis2[1]: if lis1[2] == lis2[2]: if int(lis1[3])-4<int(lis2[3]): # print 'you alraedy logged in at %s' %db[name][1] tkMessageBox.showinfo(title='成功', message='you already logged in at %s ' % db[name][1]) db[name][1] = ti else: tkMessageBox.showinfo(title='失敗', message='登入失敗') #刪除使用者,返回一個提示框 def delete(name): del db[name] tkMessageBox.showinfo(title='成功', message='刪除:'+name) #展示所有使用者,返回提示框 def showuser(): string1 = '' for key in db: string1 = string1+key string1 = string1+' '+db[key][0] string1 = string1+'\n' tkMessageBox.showinfo(title='使用者資訊', message=string1) #處理註冊視窗 def signin(): win1 = Toplevel() l1 = Label(win1, text="註冊") l1.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM l2 = Label(win1, text="姓名:") l2.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM sheet_text1 = StringVar() sheet1 = Entry(win1, textvariable=sheet_text1) sheet1.pack() l3 = Label(win1, text="密碼:") l3.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM sheet_text2 = StringVar() sheet2 = Entry(win1, textvariable=sheet_text2) sheet2.pack() def on_click1(): name = sheet_text1.get() pwd = sheet_text2.get() #呼叫處理新使用者視窗 newuser(name,pwd) Button(win1, text="press", command=on_click1).pack() #處理登入視窗 def login(): # win1 = Tk.winfo_toplevel(root) #焦點繫結到當前視窗,否則無法獲取輸入 win1 = Toplevel() l4 = Label(win1, text="登入") l4.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM l5 = Label(win1, text="姓名:") l5.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM sheet_text3 = StringVar() sheet3 = Entry(win1, textvariable=sheet_text3) sheet3.pack() l6 = Label(win1, text="密碼:") l6.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM sheet_text4 = StringVar() sheet4 = Entry(win1, textvariable=sheet_text4) sheet4.pack() def on_click2(): name = sheet_text3.get() pwd = sheet_text4.get() olduser(name,pwd) Button(win1, text="press", command=on_click2).pack() #退出程式 def quit1(): root.quit() #刪除使用者視窗 def deuser(): win1 = Toplevel() l4 = Label(win1, text="登入") l4.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM l5 = Label(win1, text="姓名:") l5.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOM sheet_text3 = StringVar() sheet3 = Entry(win1, textvariable=sheet_text3) sheet3.pack() def on_click5(): name = sheet_text3.get() delete(name) Button(win1, text="press", command=on_click5).pack() if __name__ == '__main__': root = Tk() root.title('使用者登入視窗') root.geometry('500x400') #分別進入不同的視窗 Button(root, text="註冊", command=signin).pack() Button(root, text="登入", command=login).pack() Button(root, text="退出", command=quit1).pack() Button(root, text="所有使用者", command=showuser).pack() Button(root, text="刪除使用者", command=deuser).pack() root.mainloop()