'''
1,画布功能有个细节,实战出真知。
一个jpg格式的图片,我直接更改名字成gif,然后复制路径到下面这里,系统提示我识别不出来。
image_file = tk.PhotoImage(file='C:\\Users\Administrator\PycharmProjects\百度贴吧爬虫\\123.gif')
但是,我下载了一个纯粹的gif格式的图片,放入进入就能够识别出来,很有意思!
2,pickle模块,我非常陌生,不知道细节,就知道大概可以存储一些数据。
莫烦的pickle教程地址:https://morvanzhou.github.io/tutorials/python-basic/basic/13-08-pickle/
教程非常简化精炼,我感觉很不错!
3,设置尺寸出了问题。300x200
#这里应该写200×100,应该写成200x100,x是小写字母x不是乘号
window.geometry('200×100')
'''
import tkinter as tk
import pickle
import tkinter.messagebox
# 设置窗口---最开始的母体窗口
window = tk.Tk() # 建立一个窗口
window.title('欢迎来到登录窗口')
window.geometry('500x500') # 窗口大小为300x200
#加载图片代码---图片一定要gif格式的,自己改成gif的不算数。路径这快要加转义字符。其余的都比较简单。
canvas = tk.Canvas(window,height=200,width=900)
image_file = tk.PhotoImage(file='C:\\Users\Administrator\PycharmProjects\百度贴吧爬虫\\123.gif')
image = canvas.create_image(0,0,anchor='nw',image=image_file)
canvas.pack(side='top')
#两个文字标签,用户名和密码两个部分。
tk.Label(window,text='User name:').place(x=50,y=150)
tk.Label(window,text='Password:').place(x=50,y=190)
#
var_usr_name=tk.StringVar() #讲文本框的内容,定义为字符串类型。
var_usr_name.set('example@python.com') #这是设置成默认值。
var_usr_pwd = tk.StringVar()
#第一个输入框-用来输入用户名的。
entry_usr_name=tk.Entry(window,textvariable=var_usr_name) #textvariable 获取文本框的内容
entry_usr_name.place(x=160,y=150)
#第二个输入框-用来输入密码的。
entry_usr_pwd=tk.Entry(window,textvariable=var_usr_pwd,show='*')
entry_usr_pwd.place(x=160,y=190)
def usr_login():
usr_name = var_usr_name.get()
usr_pwd = var_usr_pwd.get()
try:
with open('usrs_info.pickle','rb') as usr_file:
usrs_info = pickle.load(usr_file)
except FileNotFoundError:
with open('usrs_info.pickle','wb') as usr_file:
usrs_info={'admin':'admin'}
pickle.dump(usrs_info,usr_file)
if usr_name in usrs_info:
if usr_pwd == usrs_info[usr_name]:
tk.messagebox.showinfo(title='欢迎你',message='你还好吗?'+ usr_name)
else:
tk.messagebox.showinfo(message='Error,你的密码不对啊,请重试')
else:
is_sign_up=tk.messagebox.askyesno('欢迎','你还没有注册啊,今天就注册吧')
print(is_sign_up)
if is_sign_up:
usr_sign_up()
#注册按钮
def usr_sign_up():
def sign_to_Mofan_Python():
np= new_pwd.get()
npf = new_pwd_confirm.get()
nn = new_name.get()
#上面是获取数据,下面是查看一下是否重复注册过。
with open('usrs_info.pickle','rb') as usr_file:
exist_usr_info=pickle.load(usr_file)
if np!=npf:
tk.messagebox.showerror('Error','密码和确认密码必须一样')
elif nn in exist_usr_info:
tk.messagebox.showerror('Error','用户名早就注册了!')
else:
exist_usr_info[nn] = np
with open('usrs_info.pickle','wb') as usr_file:
pickle.dump(exist_usr_info,usr_file)
tk.messagebox.showinfo('欢迎','你已经成功注册了')
window_sign_up.destroy()
#点击注册之后,会弹出这个窗口界面。
window_sign_up = tk.Toplevel(window)
window_sign_up.title('Sign up window')
window_sign_up.geometry('550x500') #里面竟然是x,而不是*号
#用户名框--这里输入用户名框。
new_name = tk.StringVar()
new_name.set('example@python.com') #设置的是默认值
tk.Label(window_sign_up,text = 'User name').place(x=10,y=10)
entry_new_name = tk.Entry(window_sign_up,textvariable = new_name)
entry_new_name.place(x=150,y=10)
#新密码框--这里输入注册时候的密码
new_pwd = tk.StringVar()
tk.Label(window_sign_up,text='Password').place(x=10,y=50)
entry_usr_pwd = tk.Entry(window_sign_up,textvariable = new_pwd,show='*')
entry_usr_pwd.place(x=150,y=50)
#密码确认框
new_pwd_confirm = tk.StringVar()
tk.Label(window_sign_up,text='Confirm password:').place(x=10,y=90)
entry_usr_pwd_confirm=tk.Entry(window_sign_up,textvariable=new_pwd_confirm,show='*')
entry_usr_pwd_confirm.place(x=150,y=90)
btn_confirm_sign_up = tk.Button(window_sign_up,text = 'Sign up',command=sign_to_Mofan_Python)
btn_confirm_sign_up.place(x=150,y=130)
#创建注册和登录按钮
btn_login=tk.Button(window,text='Login',command=usr_login)
btn_login.place(x=170,y=230) #用place来处理按钮的位置信息。
btn_sign_up= tk.Button(window,text='Sign up',command=usr_sign_up)
btn_sign_up.place(x=270,y=230)
window.mainloop()
2019-05-27--tkinter练习-11-综合实例-登录窗口
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。