-
# coding=gbk # 重点: 1. tkinter.Tk() 创建窗口 # tkinter.Toplevel(a) 创建窗口,在窗口a的顶端 # 2. 以字典的形式保存账户和密码 # exist_usr_info[nn] = np # usrs_info = {'admin': 'admin'} # 3. with语句可以自动关闭资源 # with open('usrs_info.pickle', 'wb') as usr_file: # pickle.dump(exist_usr_info, usr_file) # 图片下载:https://github.com/MorvanZhou/tutorials/tree/master/tkinterTUT/tk15_login_example import tkinter as tk from tkinter import messagebox # import this to fix messagebox error import pickle window = tk.Tk() window.title('Welcome to Mofan Python') window.geometry('450x300') # welcome image canvas = tk.Canvas(window, height=200, width=500) image_file = tk.PhotoImage(file='welcome.gif') image = canvas.create_image(0,0, anchor='nw', image=image_file) canvas.pack(side='top') # User name标签和输入框 # Password标签和输入框 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') entry_usr_name = tk.Entry(window, textvariable=var_usr_name) entry_usr_name.place(x=160, y=150) var_usr_pwd = tk.StringVar() 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:# with语句可以自动关闭资源 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='Welcome', message='How are you? ' + usr_name) else: tk.messagebox.showerror(message='Error, your password is wrong, try again.') else: is_sign_up = tk.messagebox.askyesno('Welcome', 'You have not signed up yet. Sign up today?') if is_sign_up: usr_sign_up() # 第一个窗口的Sign up按钮绑定的命令 def usr_sign_up(): # 第二个窗口的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', 'Password and confirm password must be the same!') elif nn in exist_usr_info: tk.messagebox.showerror('Error', 'The user has already signed up!') else: # 以字典的形式保存账户和密码 exist_usr_info[nn] = np # with语句可以自动关闭资源 with open('usrs_info.pickle', 'wb') as usr_file: pickle.dump(exist_usr_info, usr_file) tk.messagebox.showinfo('Welcome', 'You have successfully signed up!') window_sign_up.destroy() # tkinter.Tk() 创建窗口 # tkinter.Toplevel(a) 创建窗口,在窗口a的顶端 window_sign_up = tk.Toplevel(window) window_sign_up.geometry('350x200') window_sign_up.title('Sign up window') # User name标签输入框 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) # Password标签输入框 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) # Confirm password标签输入框 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) # Sign up按钮 btn_comfirm_sign_up = tk.Button(window_sign_up, text='Sign up', command=sign_to_Mofan_Python) btn_comfirm_sign_up.place(x=150, y=130) # login and sign up button btn_login = tk.Button(window, text='Login', command=usr_login) btn_login.place(x=170, y=230) btn_sign_up = tk.Button(window, text='Sign up', command=usr_sign_up) btn_sign_up.place(x=270, y=230) window.mainloop()
转载于:https://www.cnblogs.com/jkn1234/p/8858195.html