Python图形用户界面设计
# 1、创建个人注册界面:用户名、密码、确认密码、性别、联系方式···注册
# 当确认密码和密码相同时,显示'欢迎XX注册'
# 否则,显示'密码错误,请重新注册'
import tkinter
from tkinter import *
from tkinter import messagebox
win = tkinter.Tk()
win.title('个人注册界面')
win.geometry("500x300+200+100")
# 显示选择状态的标签
# txt=StringVar()
# txt.set("请选择")
# lab=Label(win,textvariable=txt,relief='ridge',width=10)
# 定义状态变量对象
radVar1=tkinter.IntVar()
radVar2=tkinter.IntVar()
radVar3=tkinter.IntVar()
# 单选按钮
chk=['男','女','保密'] #定义几个选项的全局变量
# 布局设置 性别
# 使用靠左、居中、靠右对齐排列放置单选按钮组,当其中某个单选按钮被选中时,触发属性command对应的方法
# Radiobutton单选按钮 value=0表示被选中,value=1表示没选中
Gender1=tkinter.Radiobutton(win,width=3,text=chk[0],\
variable=radVar1,value=0,font=5)
Gender1.grid(column=1,row=4,columnspan=3,sticky=tkinter.W)
Gender2=tkinter.Radiobutton(win,width=3,text=chk[1],\
variable=radVar2,value=1,font=5)
Gender2.grid(column=1,row=4,columnspan=3,sticky='')
Gender3=tkinter.Radiobutton(win,width=3,text=chk[2],\
variable=radVar3,value=0,font=5)
Gender3.grid(column=1,row=4,columnspan=3,sticky=tkinter.E)
# curRad.pack()
# 标签组件 用于窗体容器中显示文字内容的组件
# 其中 sticky=tkinter.W为设置行列对齐方式,N:北/上对齐 S:南/下对齐 W:西/左对齐 E:东/右对齐
L1=Label(win, text="注册界面",font='Helvvetica -36 bold')
L2=Label(win, text="用户名: ",anchor='ne',font='song')
L3=Label(win, text="密码: ",anchor='ne',font='song')
L4=Label(win, text="确认密码: ",anchor='ne',font='song')
L5=Label(win, text="性别: ",anchor='ne',font='song')
L6=Label(win, text="联系方式: ",anchor='ne',font='song')
L7=Label(win, text="身份z号码: ",anchor='ne',font='song')
# 标签组件 grid网格排列
L1.grid(row=0,column=1)
# 用户名
L2.grid(row=1,sticky=tkinter.E)
# 密码
L3.grid(row=2,sticky=tkinter.E)
# 确认密码
L4.grid(row=3,sticky=tkinter.E)
# 性别
L5.grid(row=4,sticky=tkinter.E)
# 联系方式
L6.grid(row=5,sticky=tkinter.E)
# 身份z号码
L7.grid(row=6,sticky=tkinter.E)
# 设置(定义)文本框组件
# 用户名
e1=Entry(win)
# 密码
e2=Entry(win)
# 确认密码
e3=Entry(win,show='*')
# 联系方式
e5=Entry(win)
# 身份z号码
e6=Entry(win)
# 文本框组件 grid网格排列
# 用户名
e1.grid(row=1,column=1)
# 密码
e2.grid(row=2,column=1)
# 确认密码
e3.grid(row=3,column=1)
# 联系方式
e5.grid(row=5,column=1)
# 身份z号码
e6.grid(row=6,column=1)
# 定义函数 输入内容为特殊符号时返回True,为非特殊符号时返回False
def special_symbols(input_psd):
string = "~!@#$%^&*()_+-*/<>,.[]\/"
for i in input_psd:
if i in string:
return True
return False
# 定义函数 规定身份z号码内容信息0~9和x
# 此处有一个问题当定义string内容为小写字母‘x’时,身份z文本框中输入大写字母‘X’才能注册成功。
# 反之,当定义string内容为大写字母‘X’时,当身份z文本框中输入小写字母‘x’才能注册成功。
def id_card(x):
string=('1','2','3','4','5','6','7','8','9','0',x)
if x.endswith(string):
return True
else:
return False
# 定义登录功能函数 规定用户登录次数为3次,登录失败3次则锁定账号24小时
def login():
# 用户名列表
loading = ['a','123','b','456']
# 判断用户名是否已注册
if e2.get() in loading:
# 将密码与确认密码判断是否相等
key = e2.get()
for i in range(100):
if i < 3:
if key == e3.get():
messagebox.showerror(title='wrong',message="登录成功!")
i=3
break
else:
messagebox.showerror(title='wrong',message="登录失败,请确认用户名或者密码!")
i=3
else:
messagebox.showerror(title='wrong',message="密码已被锁定,请24小时后再来尝试!")
i=3
break
else:
messagebox.showerror(title='wrong',message="该用户还未注册!")
def register():
# isdigit()方法 检查其参数是否为十进制数字字符
# isalpha()方法 检测其参数是否只由字母组成
if not (any([x.isdigit() for x in e1.get()]) and any([x.isalpha() for x in e1.get()]) and special_symbols(e1.get())):
messagebox.showerror(title='wrong',message='注册失败,用户名格式错误,必须包括字母和数字以及特殊符号')
elif len(e2.get()) < 6:
messagebox.showerror(title='wrong',message='注册失败,密码不应少于6位')
elif e2.get() != e3.get():
messagebox.showerror(title='wrong',message='注册失败,两次密码不相同')
elif not(e5.get().isdigit() and len(e5.get()) == 11):
messagebox.showerror(title='wrong',message='注册失败,请输入正确的11位手机号')
elif not(len(e6.get()) == 18 and any([x.isdigit() for x in e6.get()]) and id_card(e6.get())):
# 判断身份z号码是否以'X'结尾
# str_a.endswith('X')
messagebox.showerror(title='wrong',message='注册失败,请输入正确的18位身份z号')
else:
messagebox.showinfo(title='successful',message='注册成功!欢迎您。新会员')
Button(win,text='注册',height=1,width=3,takefocus=0,state='active',bg='purple',fg='blue',command = register)\
.grid(row=9,column=1)
win.mainloop()
定义id_card函数 规定身份z号码内容信息0~9和x
此处有一个问题当定义string内容为小写字母‘x’时,身份z文本框中输入大写字母‘X’才能注册成功。
反之,当定义string内容为大写字母‘X’时,当身份z文本框中输入小写字母‘x’才能注册成功。
运行示例如下:
注册界面
注册密码输入内容错误,d窗提示所需输入的正确内容信息
注册确认密码输入错误,d窗提示错误信息
注册联系方式输入错误,d窗提示所需输入的正确内容信息
注册身份z号码输入错误,d窗提示输入内容的正确内容信息
注册成功提示信息
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)