一、什么是EasyGUI

EasyGUI是python中一个非常简单的GUI编程模块,不同于其他的GUI生成器,它不是事件驱动的,相反,所有的GUI交互都是通过简地函数调用就可以实现(意思是:函数调用就可以实现GUI)

EasyGUI为用户提供了简单的GUI交互接口,不需要程序员知道任何相关tkinter,框架,部件,回调或lambda的任何细节

EasyGUI可以很好兼容python 2 和 3,并且不存在任何依赖关系

EasyGUI是运行在Tkinter上并拥有自身的时间循环,而IDLE也是Tkinter写的一个应用程序并也拥有自身的时间循环。因此到那个两者同时运行的时候,有可能会发生冲突,且带来不可预测的结果。因此如果你发现你的EasyGUI程序有这样的问题。请尝试在idle外去运行

你的程序

二、在EasyGUI中,所有GUI互动均是通过简单的函数调用,下边一个简单的例子告诉你EasyGUI确实很easy

import easygui as gimport syswhile 1:g.msgbox('嗨,欢迎进入第一个界面小游戏!')msg = '请问你希望在尘封的工作室学习到什么知识呢?'title = '小游戏互动'choices = ['谈恋爱','编程','OOXX','琴棋书画']choice = g.choicebox(msg,title,choices)'''|--注意:msgbox的参数是一个字符串|--如果用户选择Cancel,该函数返回None'''g.msgbox('你的选择是:'+str(choice),"结果")msg = '你希望重新开始小游戏吗?'title = '请选择'#弹出一个Continue/Cancel对话框if g.ccbox(msg,title):pass   #如果用户选择Continueelse:sys.exit(0)   #如果用户现在Cancel

三、倒入EasyGUI

使用EasyGUI这个模块之前,必须先导入

1、最简单的导入方式:

import EasyGUI

使用这种形式导入的话,那么你使用EasyGUI的函数的时候,必须在前面加上easygui,像这样:

easygui.msgbox()

2、选择导入整个EasyGUI包

from easygui import *

使用这种形式导入的话,那么使用EasyGUI的函数的时候,可以直接写

msgbox()

3、导入as命名空间

import easygui as g

使用这种形式导入的话,调用EasyGUI函数,可以这样写

g.msgbox()

四、EasyGUI函数的默认参数

1、对于所有的对话框而言,前两个参数都是消息主体和对话框标题

按照这个规律,在某种情况下这可能不是理想的布局设计(比如当对话框在获取目录或文件名的时候会选择忽略消息参数)但保持这种一致性且贯穿于所有的窗口部件是更为得体的考虑

绝大部分的EasyGUI函数都有默认参数,几乎所有的组件都会显示消息主体和对话框标题

标题默认是空字符串,消息主体通常有一个简单的默认值

比如msgbox()函数标题部分的参数是可选的,因此你调用msgbox()的时候只需要指定一个消息参数即可,例如:

>>> import easygui as g
>>> g.msgbox('厉害了')----只有消息体,没有标题

当然也可以指定消息题和标题

>>> import easygui as g
>>> g.msgbox('厉害了','我的国')---既有消息题,也有标题

2、在各类按钮组件中,默认的消息是“shall I continue?”所以你可以不用任何参数地去调用它们

这里演示一个不带任何参数的调用ccbox(),当选择“cancel”或关闭窗口的时候返回一个布尔类型的值:

import easygui as g
import sys
if g.ccbox():pass         # 用户选择继续
else:sys.exit(0)  #用户选择取消

五、使用关键字参数调用EasyGUI的函数

调用EasyGUI函数还可以使用关键字参数哦

现在假设你需要使用一个按钮组件,但你不想指定标题参数(第二个参数)你仍可以使用关键字参数的方法指定choices参数(第三个参数)

choices = ['111','222','333']
reply = g.choicebox('你想选择那个参数',choices=choices)

六、使用按钮组件

根据需求,EasyGUI在buttonbox()上建立了一系列的函数供调用

6.1、msgbox()

msgbox(msg='(your message goes here)',title = ' ',ok_button='OK',image=None,root=None)

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

重写“OK”按钮最简单的方法是使用关键字参数:

>>> import easygui as g
>>> g.msgbox('我一定要学会编程',ok_button="加油!")

6.2、ccbox()

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')

ccbox()提供了一个选择:“C[o]ntinue'”或者“C[a]ncel'”,并相应的返回True或者False

注意:C[o]ntinue”中的[o]表示快捷键,也就是说当用户在键盘上敲一个o字符,就相当于点击了C[o]ntinue”按键

>>> g.ccbox('你的选择是','python')
True

6.3、yxbox()

ynbox(msg='Shall I continue?', title=' ', choices=('[<F1>]Yes', '[<F2>]No'), image=None, default_choice='[<F1>]Yes', cancel_choice='[<F2>]No')

跟ccbox()一样,只不过这里默认的choices参数值不同而已,[<F1>]表示将键盘上的F1功能按钮作为“YES”的快捷键使用

>>> g.ynbox('你的选择是','python')

6.4、buttonbox()

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()定义自己的一组按钮,buttonbox()会显示一组由你自定义的按钮

当用户点击任意一个按钮的时候,buttonbox()返回按钮的文本内容

如果用户点击取消或者关闭窗口,那么返回默认选项(第一个选项)

>>> choices = ['草莓','香蕉','山竹']
>>> g.buttonbox('你喜欢哪种水果','请选择',choices)

6.5、indexbox()

indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None, default_choice='Yes', cancel_choice='No')

基本跟buttonbox()一样,区别就是当用户选择第一个按钮的时候返回序号0,选择第二个按钮的时候返回序号1

>>> g.indexbox('你一定要学会编程吗?',choices=['yes','no'])
0

6.6、boolbox()

boolbox(msg='Shall I continue?', title=' ', choices=('[Y]es', '[N]o'), image=None, default_choice='Yes', cancel_choice='No')

如果第一个按钮被选中则返回Ture,否则返回False

>>> g.boolbox('你一定要学会编程吗?',choices=['yes','no'])
True

七、如何在buttonbox()里面显示图片

当你调用一个buttonbox()函数(例如:msgbox(),ynbox(),indexbox()等等)的时候,你还可以为关键字参数image赋值,可以设置一个.gif格式的图像(PNG格式的图像也是支持的哦)

g.buttonbox('我帅不帅','尘封最帅',choices=('帅','很帅','超级帅'),image='/Users/yixia/Desktop/111.png')

八、为用户提供一系列选项组件

8.1、choicebox()

choicebox(msg='Pick an item', title='', choices=[], preselect=0, callback=None, run=True)

按钮组件方便提供用户一个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,更好的策略是为它们提供一个可选择的列表

choicebox()为用户提供一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项会按照字母进行排序

8.2、multchoicebox()

multchoicebox(msg='Pick an item', title='', choices=[], preselect=0, callback=None, run=True)

multchoicebox()函数也是提供一个可选择的列表,与choicebox()不同的是,multchoicebox()支持用户选择0个,1个或者同时选择多个选项

multchoicebox()函数也是使用序列(元祖或列表)作为选项,这些选项显示前会会按照不区分大小写的方法排好序

九、让用户输入消息的组件

9.1、enterbox()

enterbox(msg='Enter something.', title=' ', default='', strip=True, image=None, root=None)

enterbox()为用户提供一个简单的输入框,返回值为用户输入的字符串

默认返回的字符串时去除首位的空格,如果需要收尾的空格,函数写上strip=False

>>> g.enterbox('一天最开心的事情是什么?')
'撸代码'

>>> g.enterbox('一天最开心的事情是什么?',strip=False)
'   敲代码   '

9.2、integerbox()

integerbox(msg='', title=' ', default=None, lowerbound=0, upperbound=99, image=None, root=None)

integerbox()函数为用户提供一个简单的输入框,用户只能输入范围内(lowerbound最小范围,upperbound最大范围)的整形数值,否则要求用户重新输入

如果不输入lowerbound和upperbound,则默认范围是0~99

g.integerbox('尘封幸运数值是那个数字呢?')

只能输入整形数字

>>> g.integerbox('尘封幸运数值是那个数字呢?',lowerbound=0,upperbound=1000)
999

9.3、multenterbox()

multenterbox(msg='Fill in values for the fields.', title=' ', fields=[], values=[], callback=None, run=True)

multenterbox()为用户提供多个简单的输入框,要注意以下几点:
--如果用户输入的值比选项少的话,则返回列表中的值用空字符穿填充用户为输入的选项

--如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量

--如果用户取消操作,则返回域中的列表的值或者None值

十、让用户输入密码

有时候可能需要用户输入密码等敏感信息,那么界面看上去应该是这样的:********

10.1、passwordbox()

passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None)

passwordbox()和enterbox()样式一样,不同的是用户输入的内容用星号(*)显示出来,该函数返回用户输入的字符串:

>>> g.passwordbox('请输入密码:')
'123456'

10.2、multpasswordbox()

multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=(), callback=None, run=True)

multpasswordbox()和multenterbox()使用相同的接口,但当它显示的时候,最后一个输入框显示为密码的形式(*):

十一、显示文本

11.1、textbox()

textbox(msg='', title=' ', text='', codebox=False, callback=None, run=True)

textbox()函数默认会以比例字体(参数codebox=True设置为等宽字体)来显示文本内容(自动换行),这个函数适合用于显示一般的书面文字

注:text参数设置可编辑文本区域的内容,可以是字符串,列表或者元祖类型

>>> g.textbox('文件内容')

11.2、codebox()

codebox(msg='', title=' ', text='')

codebox()以等宽字体显示文本内容(不自动换行),相当于textbox(codebox=True)

注:等宽字体很丑,但适合代码编写,不信你试试看

>>> g.codebox('msg')

十二、目录与文件

GUI编程中一个常见的场景是要求用户输入目录及文件名,EasyGUI提供了一些基本函数让用户来浏览文件系统,选择一个目录或文件

12.1、diropenbox()

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

diropenbox()函数提供一个对话框,返回用户选择的目录名(带完整路径哦),如果用户选择“Cancel”则返回None

default参数用于设置默认的打开目录(请确保设置的目录已存在)

>>> g.diropenbox()
'/Users/yixia/Desktop/项目/关注限制白名单/关注-php测试脚本'

12.2、fileopenbox()

fileopenbox(msg=None, title=None, default='*', filetypes=None, multiple=False)

fileopenbox()函数用于提供一个对话框,返回用户选择的文件名(带完整路径),如果用户选择“Cancel”则返回None

关于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 则表示可以同时选择多个文件。

12.3、filesavebox()

filesavebox(msg=None, title=None, default='', filetypes=None)

filesavebox()函数提供一个对话框,让用于选择文件需要保存的路径(带完整的路径)如果用户选择 “Cancel” 则返回 None。

default参数应该包含一个文件名(例如当前需要保存的文件名),当然也可以设置为空的,或者包含一个文件格式掩码的通配符

filetypes参数的设置方法请参考fileopenbox()函数

十三、记住用户的设置

13.1、EgStore

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

为了实现对一哦那个户的设置进行存储和恢复这一过程,EasyGUI提供了一个叫做EgStore的类

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

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

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

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

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

from easygui import EgStore
import os#定义一个Settings类继承EgStore
class Settings(EgStore):def __init__(self,filename): #需要指定文件名#需要指定记住的属性名称self.author = ""self.book = ""#必须执行下面的语句self.filename = filenameself.restore()#创建Settings实例化对象"settings"
settingsfilename = os.path.join('/Users/yixia/PycharmProjects/python/num38/','settings.txt')
settings = Settings(settingsfilename)author = '尘封'
book = '《机器语言的魅力》'#将上面两个变量的值保存到"settings"对象中
settings.author = author
settings.book = book
settings.store()
print("\n保存完毕")

十四、抓获异常

14.1、exceptionbox()

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

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

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

exceptionbox()很容易使用,下面举个例子:

from easygui import exceptionbox
try:print('I love write python')int('FISHC')  # 这里会产生异常
except:exceptionbox()

转载于:https://www.cnblogs.com/frankruby/p/9583090.html

【python35.1--EasyGui界面】相关推荐

  1. 大疆睿炽Tello EDU无人机python操控之三——使用easyGUI模拟操控界面控制Tello EDU

    使用easyGUI模拟操控界面控制Tello EDU 说到easyGUI这个模块,大家应该都不陌生了,模块名中有个"easy",是的,这代表它用起来很简单:这个模块就是一个能够轻易 ...

  2. python银行系统-菲菲用python模拟银行系统

    easygui界面 菲菲视频讲解 easygui 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能 为了使用EasyGui这个模块,你应该先导入它.最简单的导入语句是: 1 如果你使用上面这种 ...

  3. python简易图形-python简单图形界面GUI入门——easygui【转】

    原文:https://blog.csdn.net/mingqi1996/article/details/81272621 感觉gui做起来成就感比较高,学完基础语言顺便花一个下午看看GUI设计,现在回 ...

  4. python easygui_python简单图形界面GUI入门——easygui

    首先是easygui包下载,两种方式: 1)在命令行提示符环境下,用pip install easygui直接安装: 2)从http://easygui.sourceforge.net下载.将下载得到 ...

  5. python中easygui是干嘛用的-Python简单的图形化界面——easygui

    easygui是Python的一个图形化界面的库,使用前需要先添加这个库.在cmd里运行下面命令. pip install easygui1 等待安装完成后就可以使用了. msgbox()--消息弹窗 ...

  6. 零基础入门学习Python(33)-图形用户界面编程(GUI编程)EasyGui

    用户界面编程,即平时说的GUI(Graphical User Interface)编程,那些带有按钮.文本.输入框的窗口的编程 EasyGui是一个非常简单的GUI模块,一旦导入EasyGui模块,P ...

  7. python制作图形化小游戏_创意编程|Python的GUI简易界面设计测测你的反应力

    Python的GUI简易界面设计案例 测测你的反应力      作为初次接触代码编程的你,是不是觉得Python程序除了"码"就是"字"即使是有趣的程序除了烧烧 ...

  8. 基于python的界面自动化测试-基于Python语言的自动化测试实战第二章(上)

    原标题:基于Python语言的自动化测试实战第二章(上) 测试环境搭建 2.1 Windows 下的环境搭建 如果想要学习一门编程语言,对于新手来说只需到其官方网站上去下载最新版本安装即可,但对于想要 ...

  9. python中easygui最新下载教程_python怎么下载easygui

    详细内容 easy gui是一个模块,用于在Python中进行非常简单.非常简单的GUI编程.easygui不同于其他GUI生成器,因为easygui不是事件驱动的.相反,所有的GUI交互都是通过简单 ...

最新文章

  1. matlab bp神经网络
  2. 一位资深Java的阿里系公司实战面试经验,套路还是面试官的多
  3. python调用摄像头转向_教你如何利用python调用摄像头
  4. C#中实现计时器功能(定时任务和计时多长时间后执行某方法)
  5. flink介绍:有界流和无界流
  6. C++ Opengl 透明纹理源码
  7. 天池四月读书会|数据分析金融量化,6场直播,6位大咖,6个项目实战
  8. 探索测试 | 新奇深层测试策略之案例剖析(一)
  9. 机器学习 | 决策树的理论与实践
  10. 权限不足_十分钟掌握Linux文件属性及权限操作,不再担心权限不足!
  11. 头条2020届实习生笔试题
  12. 3dmax、python3、Rational Rose、DTLite、commons-math3、VM12、DreamWeaver、SPSS、sqlserver2008、mySQL等软件安装包最全集合
  13. android badgeview activity不显示,关于BadgeView遇到的一个奇怪的问题和解决办法
  14. 进击的Android之manifests
  15. FlyFish开发者说|开源低代码平台的体验与思考
  16. U-BOOT添加命令
  17. 中语言超酷特性 之 --- 逆唤算式
  18. 计算机不能上网 故障分析,电脑不能上网故障排查方法教程
  19. 用python求一元二次方程的解
  20. 安居客上市,难挑58大梁?

热门文章

  1. excle中根据一列数据匹配另一列数据
  2. 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
  3. 托利多地磅数据的网口读取方法
  4. html解决div用了fixed后滚动条显示不完整的问题
  5. 快来用网盘系统给小姐姐安个家吧!
  6. 传输层的各种模式——ZeroMQ 库的使用 .
  7. git什么情况下会产生冲突以及如何优雅的解决冲突
  8. watch和nvidia-smi命令实时查看GPU使用、显存占用情况
  9. 隐私计算--24--联邦迁移学习
  10. 管理综合联考可以用计算机嘛,考试可以带计算器吗?可以带草稿纸吗?