Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3648358
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2021-04-22 16:58:34

from tkinter import *

from tkinter import messagebox

import os

import xlrd

from xlutils.copy import copy

login=Tk()

login.title('登录界面')

# 设计窗口大小

login.geometry('210x200')

# 设计GUI用户登录窗体

Label(login,text="用户登录").grid(row=0,column=0,columnspan=2)

Label(login,text="用户名").grid(row=1,column=0)

name=Entry(login)

name.grid(row=1,column=1)

Label(login,text="密码:").grid(row=2,column=0)

passWord=Entry(login,show='')

passWord.grid(row=2,column=1)

Label(login,text="验证码:").grid(row=3,column=0,sticky=E)

verifyCode=Entry(login)

verifyCode.grid(row=3,column=1)

# 判断用户是否在用户信息.xls文件中

def isInExcel(data):

    filename = "用户信息.xls"

    excel = xlrd.open_workbook(filename, encoding_override="utf-8")

    sheet = excel.sheets()[0]

    sheet_row_mount = sheet.nrows # 行数

    sheet_col_mount = sheet.ncols # 列数

    sheet_name = []

    # 所有用户名信息

    for x in range(1, sheet_row_mount):

        y = 0

        sheet_name.append(sheet.cell_value(x, y))

    for x in sheet_name:

        # 找到用户名

        if (data == x):

            # 已有用户

            return 1

            break;

    # 未注册用户

    return -1

# 用户存在时,判断密码是否正确

def isPasswordDirect(data,passWord):

    filename = "用户信息.xls"

    excel = xlrd.open_workbook(filename, encoding_override="utf-8")

    sheet = excel.sheets()[0]

    sheet_row_mount = sheet.nrows # 行数

    sheet_col_mount = sheet.ncols # 列数

    sheet_name = []

    # 所有用户名信息

    for x in range(1, sheet_row_mount):

        y = 0

        sheet_name.append(sheet.cell_value(x, y))

    sheet_passWord=[]

    # 所有密码信息

    for x in range(1, sheet_row_mount):

        y = 1

        sheet_passWord.append(sheet.cell_value(x, y))

    for i in range(len(sheet_name)):

        if(data==sheet_name[i]):

            # 记录用户名在数组中的位置

            record=i

            break

    for i in range(len(sheet_passWord)):

        if(passWord==sheet_passWord[i]):

            # 判断用户名位置与密码位置是否相同

            # 以及密码是否与用户信息中的密码一致

            if(i==record):

                # 密码正确

                return 1

                break

    # 密码错误

    return -1

def successful():

    # 判断用户名不存在

    if (isInExcel(name.get())==-1):

        messagebox.showerror(title='wrong', message='用户不存在,请注册')

    # 密码不正确

    elif (isPasswordDirect(name.get(),passWord.get())==-1):

        messagebox.showerror(title='wrong', message='密码不正确')

    # 验证码位数不正确

    elif len(verifyCode.get())!=4:

        messagebox.showerror(title='wrong',message='验证码应为4')

    else:

        messagebox.showinfo(title='successful',message='登录成功')

Button(login, text='发送验证码').grid(row=4, column=0, columnspan=3)

Button(login,text='登录',command=successful).grid(row=5,column=0,columnspan=3)

# 设计用户注册GUI界面

def registereds():

    registered=Tk()

    registered.title('registered')

    registered.geometry('230x185')

    Label(registered, text='用户注册').grid(row=0, column=0, columnspan=2)

    Label(registered, text='用户名:').grid(row=1, column=0, sticky=E)

    names = Entry(registered)

    names.grid(row=1, column=1)

    Label(registered, text='密码:').grid(row=2, column=0, sticky=E)

    passwds = 货币代码Entry(registered, show='')

    passwds.grid(row=2, column=1)

    Label(registered, text='确认密码:').grid(row=3, column=0)

    repasswd = Entry(registered, show='')

    repasswd.grid(row=3, column=1)

    Label(registered, text='手机号:').grid(row=4, column=0, sticky=E)

    phonenum = Entry(registered)

    phonenum.grid(row=4, column=1)

    Label(registered, text='身份证号:').grid(row=5, column=0)

    man = Entry(registered)

    man.grid(row=5, column=1)

    # 判断是否含有特殊符号

    def teshufuhao(input_psd):

        string = "~!@#$%^&*()_+-*/<>,.[]\/"

        for i in string:

            if i in input_psd:

                return True

        return False

    def registeredes():

        # 密码长度小于8

        if len(passwds.get()) < 8:

            messagebox.showerror(title='wrong', message='注册失败,密码不应少于8')

        # 密码不同时含有数字、字母和特殊符号

        elif not (any([x.isdigit() for x in passwds.get()]) and any([x.isalpha() for x in passwds.get()]) and teshufuhao(

                passwds.get())):

            messagebox.showerror(title='wrong', message='注册失败,密码格式错误,必须包括字母和数字以及特殊符号')

        # 两次密码输入不一样

        elif passwds.get() != repasswd.get():

            messagebox.showerror(title='wrong', message='注册失败,两次密码不相同')

        # 手机号不正确

        elif not (phonenum.get().isdigit() and len(phonenum.get()) == 11):

            messagebox.showerror(title='wrong', message='注册失败,请输入正确的11位手机号')

        # 身份证号不正确

        elif len(man.get()) != 18:

            messagebox.showerror(title='wrong', message='注册失败,请输入正确的18位身份证号')

        else:

            messagebox.showinfo(title='successful', message='注册成功!')

            # 将新用户信息存入用户信息文件

            excel = xlrd.open_workbook('用户信息.xls')

            sheet = excel.sheets()[0]

            nrow = sheet.nrows # 文件行数

            wb = copy(excel)

            w_sheet = wb.get_sheet(0)

            # 从数据下一行开始写入新用户信息

            w_sheet.write(nrow, 0, names.get())

            w_sheet.write(nrow, 1, repasswd.get())

            w_sheet.write(nrow, 2, phonenum.get())

            w_sheet.write(nrow, 3, man.get())

            wb.save('用户信息.xls')

    Button(registered, text='注册', command=registeredes).grid(row=6, column=0, columnspan=3)

Button(login, text='注册', command=registereds).grid(row=6, column=0, columnspan=3)

login.mainloop()

阅读(1788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~