【有书共读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。

全部评论

相关推荐

nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务