python复习Easygui图形界面入门(下)

关于Easygui的安装和简单图形界面Easygui的介绍(上)
9.multpasswordbox()
多输入框,显示时最后一个输入框为密码形式*

>>> from easygui import *
>>> msg='用户登录'
>>> title='PP'
>>> multpassword = ['登录平台','用户ID','密码']
>>> multvalues = []
>>> multvalues = multpasswordbox(msg,title,multpassword)

or

>>> import easygui as g
>>> g.multpasswordbox('用户登录','PP',['登录平台','用户ID','密码'])

在这里插入图片描述
10.textbox()
显示文本
第三个参数可以是字符串,列表,或元组

g.textbox(msg='',title='',text='')

11.diropenbox()
提供对话框,返回用户选择的目录名,default参数用于设置默认的打开目录

g.diropenbox(msg=None,title=None,default=None)

12.fileopenbox()
返回用户选择的文件名,若default默认参数是’*'即匹配所有格式的文件

g.fileopenbox(msg=None,title=None,default='*')

具体介绍参考下面easygui实例

1.猜猜萝卜心里想的数字:

import easygui as g
import random#调用随机数模块
secret = random.randint(1,10)#randint产生的随机数是左右皆为闭区间,而randrange是左闭右开
times = 3
guess = 0

while (guess != secret)and(times>0):
    guess = g.integerbox('猜猜萝卜现在心里想的数字(1`10的整数): ','数字游戏',lowerbound=1,upperbound=10)
    
    times-=1
    if guess == secret:
        g.msgbox(["卧槽,你是萝卜心里的蛔虫吗?\t","哼,猜中了也没有奖励"])
        
    else:
        if guess > secret:
            g.msgbox("大了大了,这都猜不中,还有%d次机会"%times)
        else:
            g.msgbox("嘿,小了小了,你个傻子,还有%d次机会"%times)
        
        if times > 0:
            g.msgbox('再试一次吧:')
        else:
            g.msgbox('机会用光了哦,游戏结束')
            g.msgbox('萝卜心里想的数字是:%d'%secret)

在这里插入图片描述
2:统计代码量

import os
import easygui as g

def show_result(dirs):
    lines = 0
    total = 0
    text = ''

    for i in source_list:
        lines = source_list[i]
        total+=lines
        text+='【%s】源文件%d个,源代码%d行\n'%(i,file_list[i],lines)
    title = '统计结果'
    msg = '您目前共编写了%d行代码,完成进度:%.2f%%,离10万行代码还差%d行,请继续努力!'%(total,total/1000,100000-total)
    g.textbox(msg,title,text)    

def calculate_code(file_name):
    lines = 0
    with open(file_name,encoding='utf-8') as f:
        print('正在分析文件:%s'%file_name)
        for eachline in f:
            lines+=1

    return lines


def search_file(dirs):
    os.chdir(dirs)
    for each_file in os.listdir(os.curdir):
        suffix = os.path.splitext(each_file)[1]
        if suffix in target:
            lines = calculate_code(each_file)
            
            try:
                file_list[suffix]+=1
            except KeyError:
                file_list[suffix]=1
            try:
                
                source_list[suffix]+=lines
            except KeyError:
                source_list[suffix]=lines
#两个try except语句的作用是字典键不存在,抛出KeyError,添加字典键            
        if os.path.isdir(each_file):
            search_file(each_file)
            os.chdir(os.pardir)





target = ['.py','.c','.java']
file_list={}
source_list={}
g.msgbox('请打开您存放代码的文件夹.....','统计代码量')
path=g.diropenbox('请选择您的代码库:')

search_file(path)
show_result(path)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210208161634924.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ4ODQwNjM2,size_16,color_FFFFFF,t_70)

可以不使用异常语句,这样改进:

def search_file(dirs):
    os.chdir(dirs)
    for each_file in os.listdir(os.curdir):
        suffix = os.path.splitext(each_file)[1]

        if suffix in target:
            lines = calculate_code(each_file)
            
            file_list[suffix]+=1
            source_list[suffix]+=lines
            
        if os.path.isdir(each_file):
            search_file(each_file)
            os.chdir(os.pardir)

target = ['.py','.c','.java']
file_list={'.py':0,'.c':0,'.java':0}
source_list={'.py':0,'.c':0,'.java':0}
g.msgbox('请打开您存放代码的文件夹.....','统计代码量')
path=g.diropenbox('请选择您的代码库:')
search_file(path)
show_result(path)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210208161602155.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ4ODQwNjM2,size_16,color_FFFFFF,t_70
3.创建一个文件夹浏览框,让用户选择需要打开的文本文件,并显示出内容

import os
import easygui as g
path = g.fileopenbox('请选择您要打开的文件:',default='*.txt')
with open(path,encoding='utf-8')as f:#在后面加一个errors='ignore'甚至都能打开中文乱码文件
    title = os.path.basename(path)
    msg='文件【%s】内容如下:'%title
    g.textbox(msg,title,f.read())
              

在这里插入图片描述
*4.实现一个用于登记用户账号信息的界面(为必填,要求一定有输入且非空格)

import easygui as g
msg='【*用户名】为必填项\n【*登录平台】为必填项\n【*密码】为必填项'
title='                                                  账号登录系统'
fieldnames=['*用户名','*登陆平台','QQ','*密码']
fieldvalues=g.multpasswordbox(msg,title,fieldnames)

while 1:
    if fieldvalues==None:
        break
    errormsg = ''
    for i in range(len(fieldnames)):
        option = fieldnames[i].strip()
        if fieldvalues[i].strip() == ''and option[0]=='*':
            errormsg+=('【%s为必填项\n'%fieldnames[i])
    if errormsg == '':
        break
    fieldvalues = g.multpasswordbox(errormsg,title,fieldnames)

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值