【有书共读05】python编程--从入门到实践17

《python 编程》有一章是介绍如何调用api,其实就和调用库一样,而且调用api需要查看api文档,这一点根据需要自己学习。所以跳过这一章,写下一章。

编写一个用户登录界面

1、首先安装库easygui

直接在命令界面/终端:

pip install easygui

安装完成后就可以进行编码了

2、编码

import easygui as g
import sys

# 登录函数,用户名已注册为实现
def DengLu():
    fields = ('用户名:', '密码:')
    msg = '请输入用户名和密码:'
    title = '登录'
    yonghu = g.multpasswordbox(msg, title, fields)

    if yonghu == None or yonghu == ['', '']:
        g.msgbox('游客你好,欢迎来到我们的python学习园地!', ok_button='确定 ')
        return 2
    else:
        # 将用户名读取在list1中
        list1 = []
        ZhangHao = open('zhanghao.txt')
        for each_line in ZhangHao:
            (zhanghao_, huiche_) = each_line.split('\n')
            list1.append(zhanghao_)
        ZhangHao.close()

        # 将密码读取在list2中
        list2 = []
        MiMa = open('mima.txt')
        for each_line in MiMa:
            (mima_, huiche_) = each_line.split('\n')
            list2.append(mima_)
        MiMa.close()

        # 确认用户名和密码是否存在并且匹配
        for X in list1:
            if X == str(yonghu[0]) and list2[list1.index(X)] != str(yonghu[1]):
                g.msgbox('密码错误,请重新输入!', ok_button='确定 ')
                return 0
                break
            elif X == str(yonghu[0]) and list2[list1.index(X)] == str(yonghu[1]):
                g.msgbox(str(yonghu[0]) + '你好,欢迎来到我们的python学习园地!', ok_button='确定 ')
                return 2
                break
        if str(yonghu[0]) not in list1:
            g.msgbox('账号不存在,请注册:', ok_button='确定 ')
            return 1

# 注册函数
def ZhuCe():
    values = []
    def zhuce():
        msg = '*为必填项'
        title = '账号中心'
        fields = ['*用户名', '*密码', 'QQ']
        return g.multenterbox(msg, title, fields, values)

    YongHuZhuCe = zhuce()
    if YongHuZhuCe == None:
        g.msgbox('游客你好,欢迎来到我们的python学习园地!', ok_button='确定 ')
        return 2
    else:
        while YongHuZhuCe[0] == '' or YongHuZhuCe[1] == '':
            g.msgbox('用户名或密码不能为空!', ok_button='继续填写 ')
            values = [YongHuZhuCe[0], YongHuZhuCe[1], YongHuZhuCe[2]]
            YongHuZhuCe = zhuce()

        # 检验用户名是否被占用
        list3 = []
        ZhangHao = open('zhanghao.txt')
        for each_line in ZhangHao:
            (zhanghao_, huiche_) = each_line.split('\n')
            list3.append(zhanghao_)
        ZhangHao.close()
        while str(YongHuZhuCe[0]) in list3:
            g.msgbox('该用户名已被占用!', ok_button='重新输入 ')
            YongHuZhuCe = zhuce()

        # 将账号密码分别存储在两个txt文件内
        ZhangHao = open('zhanghao.txt', 'a')
        ZhangHao.write(YongHuZhuCe[0] + '\n')
        ZhangHao.close()
        MiMa = open('mima.txt', 'a')
        MiMa.write(YongHuZhuCe[1] + '\n')
        MiMa.close()
        return 0

def main():
    # 创建两个txt临时文件,分别用于存放用户名和密码
    ZhangHao = open('zhanghao.txt', 'w')
    MiMa = open('mima.txt', 'w')
    ZhangHao.close()
    MiMa.close()

    # 输入邀请码
    password = '111111'
    while password != '000000':
        password = g.passwordbox('请输入邀请码(默认“000000”):', '即将开始easygui简单练习!')
        if password == None:
            sys.exit(0)  # user chose to cancel,退出程序

    while 1:
        # 请选择登录或者注册
        choices = ['已有账号,直接登录', '开始注册']
        choice = 0
        choice = g.indexbox('登录/注册:', '请选择:', choices=choices)

        # 登录
        while choice == 0:
            choice = DengLu()

        # 注册
        while choice == 1:
            choice = ZhuCe()
            if choice == 0:
                # 注册成功重新切入登录页面
                g.msgbox('注册成功,即将进入登录页面!', ok_button='确定 ')
                choice = DengLu()
        if choice == 2:
            g.msgbox('已完成登录或以游客身份进入,这部分可以随意发挥了', ok_button='确定 ')

        msg = "是否要重新开始?"
        title = "请选择"
        if g.ccbox(msg, title, choices=('再来一次', '退出程序')):
            pass  # user chose to continue
        else:
            sys.exit(0)  # user chose to cancel,退出程序

main()

①multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())
msg是显示在正文中的内容,title是窗口的标题,fields是输入框的提示内容(比如‘账号’,‘密码’之类的)。values是保存用户输入内容,如果省略,也可以通过函数返回值存储。
②msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None)
msgbox() 显示一个消息和提供一个"OK"按钮,你可以指定任意的消息和标题,你甚至可以重写"OK"按钮的内容。其实msgbox() 其实就是一个通知提醒窗口,超简单(有点像php中的alert
③multenterbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())
multenterbox() 为用户提供多个简单的输入框,要注意以下几点:
如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户为输入的选项。
如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。
如果用户取消操作,则返回域中的列表的值或者None值
④ccbox(msg='Shall I continue?', title=' ', choices=('Continue', 'Cancel'), image=None)
ccbox() 提供一个选择:Continue 或者 Cancel,并相应的返回 1(选中Continue)或者 0(选中Cancel)。注意 ccbox() 是返回整型的 1 或 0,不是布尔类型的 True 或 False。

全部评论

相关推荐

11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务