寒假自学python(第六篇---easygui模块)

一、EasyGui模块

1.安装:

利用pip3安装easygui
1.在windos命令行输入

pip3 install easygui

或者下载easygui官方安装包,解压,然后在windows命令行进入解压后的文件夹目录输入Python.exe setup.py install

2.如果没有pip3就先输入

python -m ensurepip

然后再将script目录放在环境变量中
使用IDE时将IDE的解释器换成系统解释器

2.函数总集
  1. 首先导入easygui模块,import easygui或者form easygui import *(后者不需要再加easygui. 前缀)也可以import easygui as g(推荐,可以保留命名空间,也可以减少冗杂)
  2. 对于所有对话框而言,前两个参数都是消息主体和对话框标题。
    插入图片时,将image默认值改为路径即可,建议先安装pillow库(pip3 install Pillow)
函数作用
msgbox()显示一个含有ok按钮的对话框
ccbox()提供一个选择并相应的返回 True 或者 False。
ynbox()与ccbox()功能相同只是默认的 choices 参数值不同而已
buttonbox()提供选择按钮,点击后返回文本内容
ndexbox()与buttonbox()功能相同,区别就是当用户选择第一个按钮的时候返回序号 0, 选择第二个按钮的时候返回序号 1。
boolbox()如果第一个按钮被选中则返回 True,否则返回 False。
choicebox()提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项会按照字母进行排序
multchoicebox()提供列表,multchoicebox() 支持用户选择 0 个,1 个或者同时选择多个选项
enterbox()提供一个最简单的输入框,返回值为用户输入的字符串。
integerbox()提供一个简单的输入框,用户只能输入范围内(lowerbound 参数设置最小值,upperbound 参数设置最大值)的整型数值,否则会要求用户重新输入。
multenterbox()提供多个简单的输入框
passwordbox()用户输入的内容用星号(*)显示出来,该函数返回用户输入的字符串
multpasswordbox()multpasswordbox() 跟 multenterbox() 使用相同的接口,但当它显示的时候,最后一个输入框显示为密码的形式(*)
textbox()显示文本内容(自动换行),这个函数适合用于显示一般的书面文字。
codebox()以等宽字体显示文本内容(不自动换行),相当于 textbox(codebox=True)
diropenbox()提供一个对话框,返回用户选择的目录名(带完整路径哦)
fileopenbox()提供一个对话框,返回用户选择的文件名(带完整路径哦)
filesavebox()提供一个对话框,让用于选择文件需要保存的路径(带完整路径哦)
msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None)
ccbox(msg='Shall I continue?', title=' ', choices=('C[o]ntinue', 'C[a]ncel'), image=None, default_choice='C[o]ntinue', cancel_choice='C[a]ncel')
ynbox(msg='Shall I continue?', title=' ', choices=('[<F1>]Yes', '[<F2>]No'), image=None, default_choice='[<F1>]Yes', cancel_choice='[<F2>]No')
buttonbox(msg='', title=' ', choices=('Button[1]', 'Button[2]', 'Button[3]'), image=None, images=None, default_choice=None, cancel_choice=None, callback=None, run=True)
indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None, default_choice='Yes', cancel_choice='No')
boolbox(msg='Shall I continue?', title=' ', choices=('[Y]es', '[N]o'), image=None, default_choice='Yes', cancel_choice='No')
choicebox(msg='Pick an item', title='', choices=[], preselect=0, callback=None, run=True)
multchoicebox(msg='Pick an item', title='', choices=[], preselect=0, callback=None, run=True)
enterbox(msg='Enter something.', title=' ', default='', strip=True, image=None, root=None)
integerbox(msg='', title=' ', default=None, lowerbound=0, upperbound=99, image=None, root=None)
multenterbox(msg='Fill in values for the fields.', title=' ', fields=[], values=[], callback=None, run=True)
passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None)
multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=(), callback=None, run=True)
textbox(msg='', title=' ', text='', codebox=False, callback=None, run=True)
codebox(msg='', title=' ', text='')
diropenbox(msg=None, title=None, default=None) default 参数用于设置默认的打开目录(请确保设置的目录已存在)
fileopenbox(msg=None, title=None, default='*', filetypes=None, multiple=False)
filesavebox(msg=None, title=None, default='', filetypes=None)
3.函数细解
  • msgbox(msg=‘(Your message goes here)’, title=’ ', ok_button=‘OK’, image=None, root=None)
from easygui import  *
msgbox('嗨,minqo','这不是标题')  ##第一个参数为内容,第二个为标题

easygui
msgbox() 显示一个消息和提供一个 “OK” 按钮,你可以指定任意的消息和标题,你甚至可以重写 “OK” 按钮的内容(修改ok_botton的内容)。

  • ccbox(msg=‘Shall I continue?’, title=’ ', choices=(‘C[o]ntinue’, ‘C[a]ncel’), image=None, default_choice=‘C[o]ntinue’, cancel_choice=‘C[a]ncel’)
from easygui import  *
msgbox('hi,minqo','这里不是标题',ok_button='下一项')
while 1:
    if ccbox('1+1 = ?','这里是标题',choices=('2按[o]','1按[p]')):
        print('回答正确')
        break
    else:
        print('回答错误')

在这里插入图片描述
注意:“C[o]ntinue” 中的 [o] 表示快捷键,也就是说当用户在键盘上敲一下 o 字符,就相当于点击了 “C[o]ntinue” 按键。


  • buttonbox(msg=‘’, title=’ ', choices=(‘Button[1]’, ‘Button[2]’, ‘Button[3]’), image=None, images=None, default_choice=None, cancel_choice=None, callback=None, run=True)
buttonbox(msg='你是?',title='标题',choices=('恶魔','minqo','天使'))

在这里插入图片描述
可以使用 buttonbox() 定义自己的一组按钮,buttonbox() 会显示一组由你自定义的按钮。
当用户点击任意一个按钮的时候,buttonbox() 返回按钮的文本内容。
如果用户点击取消或者关闭窗口,那么会返回默认选项(第一个选项)。

  • choicebox(msg=‘Pick an item’, title=‘’, choices=[], preselect=0, callback=None, run=True)
from easygui import  *
list_atm = {'迪迦','盖亚','赛罗','阿古茹'}
choicebox(msg='哪一个奥特曼最帅',title='选择奥特曼',choices=list_atm)

在这里插入图片描述

另外还可以使用键盘来选择其中一个选项(比较纠结,但一点儿都不重要):

  • 例如当按下键盘上的 “g” 键,将会选中的第一个以 “g” 开头的选项。再次按下 “g” 键,则会选中下一个以 “g” 开头的选项。在选中最后一个以 “g” 开头的选项的时候,再次按下 “g” 键将重新回到在列表的开头的第一个以 “g” 开头的选项。
  • 如果选项中没有以 “g” 开头的,则会选中字符排序在 “g” 之前(“f”)的那个字符开头的选项
  • 如果选项中没有字符的排序在 “g” 之前的,那么在列表中第一个元素将会被选中。

  • enterbox(msg=‘Enter something.’, title=’ ‘, default=’', strip=True, image=None, root=None)
from easygui import  *
enterbox(msg='请输入',title='你想对他说:')

在这里插入图片描述

默认返回的值会自动去除首尾的空格,如果需要保留首尾空格的话请设置参数 strip=False。


  • integerbox(msg=‘’, title=’ ', default=None, lowerbound=0, upperbound=99, image=None, root=None)
from easygui import  *
integerbox(msg='你多大了?',title='年龄',lowerbound=0,upperbound=99)

在这里插入图片描述


  • multenterbox(msg=‘Fill in values for the fields.’, title=’ ', fields=[], values=[], callback=None, run=True)
from easygui import  *
message = ('用户名','真实姓名','固定电话','手机号码','QQ','E-mail')
multenterbox(msg='[真实姓名]为必填项\n[手机号码]为必填项\n[E-mail]为必填项'
             ,title='用户', fields =message)

在这里插入图片描述

multenterbox() 为用户提供多个简单的输入框,要注意以下几点:

  1. 如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户为输入的选项。
  2. 如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。
  3. 如果用户取消操作,则返回域中的列表的值或者 None 值。

  • fileopenbox(msg=None, title=None, default=‘*’, filetypes=None, multiple=False)

关于 default 参数的设置方法:

  • default 参数指定一个默认路径,通常包含一个或多个通配符
  • 如果设置了 default 参数,fileopenbox() 显示默认的文件路径和格式
  • default 默认的参数是 ‘*’即匹配所有格式的文件

例如:

  • default=“c:/fishc/*.py” 即显示 C:\fishc 文件夹下所有的 Python 文件
  • default=“c:/fishc/test*.py” 即显示 C:\fishc 文件夹下所有的名字以 test 开头的 Python 文件

关于 filetypes 参数的设置方法

  • 可以是包含文件掩码的字符串列表,例如:filetypes = [“*.txt”]
  • 可以是字符串列表,列表的最后一项字符串文件类型的描述,例如:filetypes = [“.css", [".htm”, “*.html”, “HTML files”]]

最后是 multiple 参数,如果为 True 则表示可以同时选择多个文件

4.记住用户设置

GUI 编程中一个常见的场景就是要求用户设置一下参数,然后保存下来,以便下次用户使用你的程序的时候可以记住他的设置。

为了实现对用户的设置进行存储和恢复这一过程,EasyGUI 提供了一个叫做 EgStore 的类。 (暂未学习)

为了记住某些设置,你的应用程序必须定义一个类(下面案例中的 “Settings”)继承自 EgStore 类。

然后你的应用程序必须创建一个该类的实例化对象(下面案例中的 “settings”)。

设置类的构造函数init 方法)必须初始化所有的你想要它所记住的那些值。

一旦你这样做了,你就可以在 settings 对象中通过设定值去实例化变量,从而很简单地记住设置。

之后使用 settings.store() 方法在硬盘上持久化保存。

from easygui import EgStore

# 定义一个叫做“Settings”的类,继承自EgStore类
class Settings(EgStore):

    def __init__(self, filename):  # 需要指定文件名
        # 指定要记住的属性名称
        self.author = ""
        self.book = ""

        # 必须执行下面两个语句
        self.filename = filename
        self.restore()

# 创建“Settings”的实例化对象“settings”
settingsFilename = "settings.txt"
settings = Settings(settingsFilename)

author = "小甲鱼"
book = "《零基础入门学习Pyhon》"

# 将上面两个变量的值保存到“settings”对象中
settings.author = author
settings.book = book
settings.store()
print("\n保存完毕\n")
5.捕获异常

使用 EasyGUI 编写 GUI 程序,有时候难免会产生异常。当然这取决于你如何运行你的应用程序,当你的应用程序崩溃的时候,堆栈追踪可能会被抛出,或者被写入到 stdout 标准输出函数

EasyGUI 通过 exceptionbox() 函数提供了更好的方式去处理异常。

当异常出现的时候,exceptionbox() 会将堆栈追踪显示在一个 codebox() 中,并且允许你做进一步的处理

try:
        print('I Love FishC.com!')
        int('FISHC') # 这里会产生异常
except:
        exceptionbox()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值