EasyGui学习⽂档【超详细中⽂版】[增强版]
翻译改编⾃官⽅⽂档:
翻译改编者:⼩甲鱼,本⽂欢迎转载,转载请保证原⽂的完整性!
演⽰使⽤ Python 3.3.3 版本
0. 安装 EasyGui 官⽹: 最新版: (141.61 KB, 下载次数: 2300) 使⽤标准⽅法安装: 使⽤命令窗⼝切换到easygui-docs-0.96的⽬录下【Windows下】执⾏C:\ setup.py install【Linux或Mac下】sudo /usr/bin/python33 setup.py install 1. 建议不要在 IDLE 上运⾏ EasyGui EasyGui 是运⾏在 Tkinter 上并拥有⾃⾝的事件循环,⽽ IDLE 也是 Tkinter 写的⼀个应⽤程序并也拥有⾃⾝的事件循环。因此当两者同时运⾏的时候,有可能会发⽣冲突,且带来不可预测的结果。因此如果你发现你的 EasyGui 程序有这样的问题,请尝试在 IDLE 外去运⾏你的程序。 2. ⼀个简单的例⼦ 在 EasyGui 中,所有的 GUI 互动均是通过简单的函数调⽤,下边⼀个简单的例⼦告诉你 EasyGui 确实很 Easy! import easygui as g import sys while 1:        g.msgbox("嗨,欢迎进⼊第⼀个界⾯⼩游戏
^_^")        msg ="请问你希望在鱼C⼯作室学习到什么知识呢?"        title = "⼩游戏互动"        choices = ["谈恋爱", "编程", "OOXX", "琴棋书画"]                  choice = g.choicebox(msg, title, choices)        # note t
hat we convert choice to string, in case        # the user cancelled the choice, and we got None.        g.msgbox("你的选择是: " + str(choice), "结果")        msg = "你希望重新开始⼩游戏吗?"        title = "请选择"                  box(msg, title):    # show a Continue/Cancel dialog                pass  # user chose Continue        else:                it(0)    # user chose Cancel 复制代码 3. EasyGui 的各种功能演⽰ 要运⾏ EasyGui 的演⽰程序,在命令⾏调⽤ EasyGui 是这样的: C:\ easygui.py 复制代码 或者你可以从 IDE(例如 IDLE, PythonWin, Wing, 等等)上来调⽤: >>> import easygui as g >>> g.egdemo() 复制代码 成功调⽤后你将可以尝试 EasyGui 拥有的各种功能,并将你选择的结果打印⾄控制台。 4. 导⼊ EasyGui 为了使⽤ EasyGui 这个模块,你应该先导⼊它。最简单的导⼊语句是:import easygui 复制代码 如果你使⽤上⾯这种形式导⼊的话,那么你使⽤ EasyGui 的函数的时候,必须在函数的前⾯加上前缀easygui,像这样: easygui.msgbox(...) 复制代码 另⼀种选择是导⼊整个 EasyGui 包: from easygui import * 复制代码 这使得我们更容易调⽤ EasyGui 的函数,你可以直接这样编写代码: msgbox(...) 复制代码 第三种⽅案是使⽤类似下边的 import 语句: import easygui as g 复制代码 这样可以让你保持 EasyGui 的命名空间,同时减少你的打字数量。导⼊之后你就可以这么调⽤ EasyGui 的函数:g.msgbox(...) 复制代码 5. 使⽤ EasyGui ⼀旦你的模块导⼊ EasyGui,GUI 操作就是⼀个简单的调⽤ EasyGui 函数的⼏个参数的问题了。 例如,使⽤ EasyGui 来实现著名的“你好,世界!”程序是这样的: import easygui as g        g.msgbox("Hello, world!") 复制代码 6. EasyGui 函数的默认参数 对于所有函数⽽⾔,前两个参数是消息和标题。按照这个规律,在
某种情况下,这可能不是最有利于⽤户的安排(例如,对话框在获取⽬录和⽂件名的时候忽略消息参数),但我觉得保持这种⼀致性贯穿于所有的窗⼝部件是⼀种更为重要的考虑!    绝⼤部分的 EasyGui 函数都有默认参数,⼏乎所有的组件都会显⽰⼀个消息和标题。标题默认是空字符串,信息通常有⼀个简单的默认值。    这使得你可以尽量少的去设置参数,⽐如 msgbox() 函数标题部分的参数就是可选的,所以你调⽤ msgbox() 的时候可以只指定⼀个消息参数,例如: >>> msgbox('我爱⼩甲鱼^_^') 复制代码 当然你也可以指定标题参数和消息参数,例如: >>> msgbox('我爱⼩甲鱼^_^', '鱼油⼼声') 复制代码 在各类按钮组件⾥,默认的消息是"Shall I continue?",所以你可以不带任何参数地去调⽤它们。这⾥我们演⽰不带任何参数地去调⽤ ccbox(),当选择"cancel"或关闭窗⼝的时候返回⼀个布尔类型的值: if ccbox():        pass        # user chose to continue else:        return      # user chose to cancel 复制代码 7. 使⽤关键字参数调⽤ EasyGui 的函数 调⽤ EasyGui 函数还可以使⽤关键字参数哦。(如忘了的童鞋翻出《零基础⼊门学习Python》第18讲⾃⾏脑补) 现在假设你需要使⽤⼀个按钮组件,但你不想指定标题参数(第⼆个参数),你仍可以使⽤关键字参数的⽅法指定 choices 参数(第三个参数),像这样: >>> choices = ['愿意', '不愿意', '有钱的时候愿意'] >>> reply = choicebox('你愿意购买资源打包⽀持⼩甲鱼吗?', choices = choices) 复制代码 8. 使⽤按钮组件根据需求,EasyGui 在 buttonbox() 上建⽴了⼀系列的函数供调⽤。 8.1 msgbox() msgbox(msg='(Your message goes here)',
title=' ', ok_button='OK', image=None, root=None) msgbox() 显⽰⼀个消息和提供⼀个"OK"按钮,你可以指定任意的消息和标题,你甚⾄可以重写"OK"按钮的内容。 以下是 msgbox() 的实例函数: def msgbox(msg="(Your message goes here)", title="",
ok_button="OK"):        .... 复制代码 重写"OK"按钮最简单的⽅法是使⽤关键字参数: >>> msgbox("我⼀定要学会编程!", ok_button="加油!") 复制代码 8.2 ccbox() ccbox(msg='Shall I continue?', title=' ', choices=('Continue', 'Cancel'), image=None) ccbox() 提供⼀个选择:Continue 或者 Cancel,并相应的返回 1(选中Continue)或者 0(选中Cancel)。 注意 ccbox() 是返回整型的 1 或 0,不是布尔类型的 True 或 False。但你仍然可以这么写: if ccbox('要再来⼀次吗?', choices=('要啊要啊^_^', '算了吧T_T')):        msgbox('不给玩了,再玩就玩坏了......') else:        it(0) # 记得先 import sys 哈 复制代码 8.3 ynbox() ynbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None) 同上,都不知作者设计这两玩意⼉搞啥...... 8.4 buttonbox() buttonbox(msg='', title=' ',
choices=('Button1', 'Button2', 'Button3'), image=None, root=None) 可以使⽤ buttonbox() 定义⾃⼰的⼀组按钮,buttonbox() 会显⽰⼀组你定义好的按钮。 当⽤户点击任意⼀个按钮的时候,buttonbox() 返回按钮的⽂本内容。如果⽤户取消取消或者关闭窗⼝,那么会返回默认选项(第⼀个选项)。请看例⼦: 8.5 indexbox() indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'),
image=None) 基本跟上边⼀样,区别就是当⽤户选择第⼀个按钮的时候返回序号 0, 选择第⼆个按钮的时候返回序号 1。 8.6 boolbox() boolbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None) 如果第⼀个按钮被选中则返回 1,否则返回 0。 9. 如何在 buttonbox ⾥边显⽰图⽚ 当你调⽤⼀个 buttonbox 函数(例如 msgbox(), ynbox(), indexbox() 等等)的时候,你还可以为关键字参数 image 赋值,这是设置⼀个 .gif 格式的图像(注意仅⽀持 GIF 格式哦): buttonbox('⼤家说我长得帅吗?', image='turtle.gif', choices=('帅', '不帅', '!@#$%')) 复制代码 10. 为⽤户提供⼀系列选项 10.1 choicebox() choicebox(msg='Pick something.', title=' ',
choices=()) 按钮组件⽅便提供⽤户⼀个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,更好的策略是为它们提供⼀个可选择的列表。        choicebox() 为⽤户提供了⼀个可选择的列表,使⽤序列(元祖或列表)作为选项,这些选项显⽰前会按照不区分⼤⼩写的⽅法排好序。 另外还可以使⽤键盘来选择其中⼀个选项(⽐较纠结,但⼀点⼉都不重要): 例如当按下键盘上的"g"键,将会选中的第⼀个以"g"开头的选项。再次按下"g"键,则会选中下⼀个以"g"开头的选项。在选中最后⼀个以"g"开头的选项的时候,再次按下"g"键将重新回到在列表的开头的第⼀个以"g"开头的选项。如果选项中没有以"g"开头的,则会选中字符排序在"g"之前("f")的那个字符开头的选项如果选项中没有字符的排序在"g"之前的,那么在列表中第⼀个元素将会被选中。 综合我们之前学习的⽂件功能,举个⾼达上的例⼦( 源代码在第35讲的课后作业中^_^): 10.2 multchoicebox() multchoicebox(msg='Pick
as many items as you like.', title=' ', choices= (), **kwargs) multchoicebox() 函数也是提供⼀个可选择的列表,与 choicebox() 不同的是,multchoicebox() ⽀持⽤户选择 0 个,1
个或者同时选择多个选项。 multchoicebox() 函数也是使⽤序列(元祖或列表)作为选项,这些选项显⽰前会按照不区分⼤⼩写的⽅法排好序。 11. 让⽤户输⼊消息 11.1 enterbox() enterbox(msg='Enter something.', title=' ', default='', strip=True, image=None,
root=None) enterbox() 为⽤户提供⼀个最简单的输⼊框,返回值为⽤户输⼊的字符串。默认返回的值会⾃动去除⾸尾的空格,如果需要保留⾸尾空格的话请设置参数 strip=False。 11.2 integerbox() integerbox(msg='', title=' ', default='', lowerbound=0,
upperbound=99, image=None, root=None, **invalidKeywordArguments) integerbox() 为⽤户提供⼀个简单的输⼊框,⽤户只能输⼊范围内(lowerbound参数设置最⼩值,upperbound参数设置最⼤值)的整型数值,否则会要求⽤户重新输⼊。 11.3 multenterbox() multenterbox(msg='Fill in values for the fields.', title=' ', fields=([list]), values=()) 例:list1= ['⽤户名:','密码:']python官方文档中文版
g.multpasswordbox(msg='请输⼊⽤户名和密码',title='登录',fields=(list1)) multenterbox() 为⽤户提供多个简单的输⼊框,要注意以下⼏点: 如果⽤户输⼊的值⽐选项少的话,则返回列表中的值⽤空字符串填充⽤户为输⼊的选项。如果⽤户输⼊的值⽐选项多的话,则返回的列表中的值将截断为选项的数量。
如果⽤户取消操作,则返回域中的列表的值或者None值。 实现如下图( 源代码在第35讲的课后作业中^_^): 12. 让⽤户输⼊密码 有时候我们需要让⽤户输⼊密码,就是⽤户输⼊的东西看上去都是"*******"。 12.1 passwordbox() passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None) passwordbox() 跟 enterbox() 样式⼀样,不同的是⽤户输⼊的内容⽤"*"显⽰出来,返回⽤户输⼊的字符串: 12.2 multpasswordbox() multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=()) multpasswordbox() 跟 multenterbox() 使⽤相同的接⼝,但当它显⽰的时候,最后⼀个输⼊框显⽰为密码的形式("*"): 13. 显⽰⽂本 EasyGui 还提供函数⽤于显⽰⽂本。 13.1 textbox() textbox(msg='', title=' ', text='', codebox=0) 例:g.textbox(text= open('E:\\新建⽂本⽂档.txt','r')) testbox() 函数默认会以⽐例字体(参数 codebox=1 设置为等宽字体)来显⽰⽂本内容(会⾃动换⾏哦),这个函数适合⽤于显⽰⼀般的书⾯⽂字。 注:text 参数(第三个参数)可以是字符串类型,列表类型,或者元祖类型。 13.2 codebox() codebox(msg='', title=' ', text='') codebox() 以等宽字体显⽰⽂本内容,相当于textbox(codebox=1) 注:等宽字体很丑的,不信你试试看@_@ 14. ⽬录与⽂件 GUI 编程中⼀个常见的场景是要求⽤户输⼊⽬录及⽂件名,EasyGui 提供了⼀些基本函数让⽤户来浏览⽂件系统,选择⼀个⽬录或⽂件。 14.1 diropenbox() diropenbox(msg=None,
title=None, default=None) diropenbox() 函数⽤于提供⼀个对话框,返回⽤户选择的⽬录名(带完整路径哦),如果⽤户选择"Cancel"则返回 None。 default 参数⽤于设置默认的打开⽬录(请确保设置的⽬录已存在)。 14.2 fileopenbox()
fileopenbox(msg=None, title=None, default='*', filetypes=None) 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"]] 14.3 filesavebox() filesavebox(msg=None, title=None, default='', filetypes=None) filesavebox() 函数提供⼀个对话框,让⽤于选择⽂件需要保存的路径(带完整路径哦),如果⽤户选择"Cancel"则返回 None。 default 参数应该包含⼀个⽂件名(例如当前需要保存的⽂件名),当然你也可以设置为空的,或者包含⼀个⽂件格式掩码的通配符。 filetypes 参数的设置⽅法请参考上边。 15. 记住⽤户的设置15.1 EgStore GUI 编程中⼀个常见的场景就是要求⽤户设置⼀下参数,然后保存下来,以便下次⽤户使⽤你的程序的时候可以记住他的设置。 为了实现对⽤户的设置进⾏存储和恢复这⼀过程,EasyGui 提供了⼀个叫做 EgStore 的类。为了记住某些设置,你的应⽤程序必须定义⼀个类(暂时称之为"设置"类,尽管你随意地使⽤你想要的名称设置它)继承⾃ EgStore 类。 然后你的应⽤程序必须创建⼀个该类的对象(暂时称之为"设置"对象)。 设置类的构造函数(__init__ ⽅法)必须初始化所有的你想要它所记住的那些
值。 ⼀旦你这样做了,你就可以在"设置"对象中通过设定值去实例化变量,从⽽很简单地记住设置。之后使⽤ settings.store() ⽅法在硬盘上持久化设置对象。 下⾯是创建⼀个"设置"类的例⼦: #----------------------------------------------------------------------- # create "settings", a persistent Settings object # Note that the "filename" argument is required. # The directory for the persistent file must already exist. #----------------------------------------------------------------------- settingsFilename = os.path.join("C:", "FishCApp", "")  # Windows example settings = Settings(settingsFilename) 复制代码 下⾯是使⽤"设置"对象的例⼦: # we initialize the "user" and "server" variables # In a real application, we'd probably have the user enter them via enterbox user    = "奥巴马" server  = "⽩宫" # we save the variables as attributes of the "settings" object settings.userId = user settings.targetServer = server settings.store()  # persist the settings # run code that gets a new value for userId # then persist the settings with the new value user    = "⼩甲鱼" settings.userId = user settings.store() 复制代码        16. 捕获异常 exceptionbox() 使⽤ EasyGui 编写 GUI 程序,有时候难免会产⽣异常。当然这取决于你如何运⾏你的应⽤程序,当你的应⽤程序崩溃的时候,堆栈追踪可能会被抛出,或者被写⼊到 stdout 标准输出函数中。 EasyGui 通过 exceptionbox() 函数提供了更好的⽅式去处理异常,异常出现的时候,exceptionbox() 会显⽰堆栈追踪在⼀个 codebox() 中并且允许你做进⼀步的处理。 exceptionbox() 很容易使⽤,下⾯是⼀个例⼦: try:        print('I Love FishC!')        int('FISHC') # 这⾥会产⽣异常 except:        exceptionbox() 复制代码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。