基本思路:如果某次登录成功,则创建临时文件记录有关信息,每次启动程序时尝试自动获取上次登录成功的信息并自动编写。本文主要演示思路,可根据实际系统中的需要进行改写,例如读取数据库并验证用户名和密码是否正确、对用户名和密码进行本地加密存储等等。
import tkinter
import tkinter.messagebox
import os
import os.path
# 获取Windows平台临时文件夹
path = os.getenv('temp')
filename = os.path.join(path, 'info.txt')
# 创建应用程序窗口
root = tkinter.Tk()
# 在窗口上创建标签组件
labelName = tkinter.Label(root,\
text='User Name:',\
justify=tkinter.RIGHT,\
width=80)
labelName.place(x=10, y=5, width=80, height=20)
# 创建字符串变量和文本框组件,同时设置关联的变量
varName = tkinter.StringVar(root, value='')
entryName = tkinter.Entry(root,\
width=80,\
textvariable=varName)
entryName.place(x=100, y=5, width=80, height=20)
labelPwd = tkinter.Label(root,\
text='User Pwd:',\
justify=tkinter.RIGHT,\
width=80)
labelPwd.place(x=10, y=30, width=80, height=20)
# 创建密码文本框
varPwd = tkinter.StringVar(root, value='')
entryPwd = tkinter.Entry(root,\
show='*',\
width=80,\
textvariable=varPwd)
entryPwd.place(x=100, y=30, width=80, height=20)
# 尝试自动填写用户名和密码
try:
with open(filename) as fp:
n, p = fp.read().strip().split(',')
varName.set(n)
varPwd.set(p)
except:
pass
# 登录按钮事件处理函数
def login():
# 获取用户名和密码
name = entryName.get()
pwd = entryPwd.get()
if name=='admin' and pwd=='123456':
tkinter.messagebox.showinfo(title='恭喜',\
message='登录成功!')
# 把登录成功的信息写入临时文件
with open(filename, 'w') as fp:
fp.write(','.join((name,pwd)))
else:
tkinter.messagebox.showerror('警告',\
message='用户名或密码错误')
# 创建按钮组件,同时设置按钮事件处理函数
buttonOk = tkinter.Button(root,\
text='Login',\
command=login)
buttonOk.place(x=30, y=70, width=50, height=20)
# 取消按钮的事件处理函数
def cancel():
#清空用户输入的用户名和密码
varName.set('')
varPwd.set('')
buttonCancel = tkinter.Button(root,\
text='Cancel',\
command=cancel)
buttonCancel.place(x=90, y=70, width=50, height=20)
#启动消息循环
root.mainloop()
第一次登录成功之后,再次运行结果如图所示:
----------分割线----------
重要活动通知:为答谢广大朋友的长期支持,同时为庆祝“Python小屋”开通一周年(2016年6月29日开通),“Python小屋”屋主董付国老师联合清华大学出版社于2017年6月29日开展赠书活动,关注“Python小屋”的第1、1000、2000、3000、4000、5000、6000位朋友将获得董付国老师Python系列图书一套(包含《Python程序设计基础》、《Python程序设计》(第2版)(说明:第1版已不再维护,且出版社库房已无存货,无法赠送)、《Python可以这样学》、《Python程序设计开发宝典》(预计2017年9月出版)以及一本神秘Python书籍(预计2017年9月出版))。为保证活动的公平性,2017年6月29日上午8点会把关注公众号的名单一次性导出,然后按照关注时间顺序公布名单并赠书。感谢清华大学出版社白立军老师的大力支持!
另:本活动长期有效,不定期举办,第7000、8000、9000、10000位以及后续整千位关注的朋友同样可以获得赠书。