pythonTkinter学习

Posted bullshit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pythonTkinter学习相关的知识,希望对你有一定的参考价值。

定义

python自带的可编辑的GUI界面,是一个图像窗口。

Tkinter是使用python进行窗口视窗设计的模块。

标签-按钮

2.1、Lable&Button标签和按钮

定义window窗口和属性

window=tk.TK()

window.title(\'my window\')

window.geometry(\'300×100\')

# 窗口内容

window.mainloop()

 

Pythontkinter版的用户登录管理

转:

【Python】tkinter版的用户登录管理

tkinter版的用户登录管理

  1. 内容
    编写一个用户登录管理程序,设计窗体的布局,制定密码规则和验证码规则。要求使用 Python 标准库 tkinter 编写基于GUI 的用户登录窗体。通过该窗体,用户输入用户名、密码和验证码等信息,确认登录后需要判断用户信息是否合法,并弹出对应的反馈信息。通过判断用户是否在用户信息中,以及输入密码是否与用户信息文件中用户名所对应的密码是否相同,来判断用户是否合法。此外,新用户还可以进行注册,注册需要输入用户名、密码、手机号和身份证号等信息。注册时密码需要遵循一定规则(长度不小于8且含有数字、字母和特殊字符),注册后将用户信息存储到文件中,更新用户信息文件。
  2. 步骤
    【Python】tkinter版的用户登录管理
  3. 代码
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()

  1. 结果
    (1)密码正确(对照用户信息文件输入密码),结果显示登录成功
    【Python】tkinter版的用户登录管理
    【Python】tkinter版的用户登录管理
    (2)密码不正确,结果显示密码不正确
    【Python】tkinter版的用户登录管理
    (3)密码正确,验证码位数不对
    【Python】tkinter版的用户登录管理

(4)用户名不存在
【Python】tkinter版的用户登录管理
5. 注册新用户
(1)新用户写入用户信息文件
【Python】tkinter版的用户登录管理
【Python】tkinter版的用户登录管理
(2)再次登录,用户登录成功
【Python】tkinter版的用户登录管理

转:

【Python】tkinter版的用户登录管理

以上是关于pythonTkinter学习的主要内容,如果未能解决你的问题,请参考以下文章

Pythontkinter应用之抽奖程序

Pythontkinter应用之简易计算器

Pythontkinter应用之简易计算器

Pythontkinter版的用户登录管理

Pythontkinter应用之用户登录界面

Pythontkinter应用之用户登录界面