学习文档0. 安装官网查看内置的所有模块help(modules)在进行安装操作时, 采用pip这一方式来实现, 进入到属于自身的安装目录。1. 什么是 从中, 有一个特别简单的GUI编程模块, 它跟其他GUI生成器不一样, 并非事件驱动的, 相反地, 所有GUI交互, 通过简单函数调用便能达成。在为用户供给简单的GUI交互接口时, 并不需要程序员去知晓任何跟框架 , 跟部件 , 以及跟回调相关的点滴细节。可以很好地兼容 2 和 3并且不存在任何依赖关系。运行于其上, 且具备自身的事件循环, IDLE同样是用其编写的一个应用程序, 且同样有自身的事件循环。所以, 当二者同时运行时, 存在发生冲突的可能性, 还会带来无法预先推测的结果。于是, 倘若你发觉你的程序出现这类问题, 那就尝试在非IDLE的环境下去运行你的程序。2. 一个简单的例子于其中, 全部的GUI互动皆是借助简单的函数调用达成, 紧接着一个简单的例子向你表明, 这着实非常容易import easygui as g import sys while 1: g.msgbox(嗨欢迎进入第一个界面小游戏^_^) msg 请问你希望在鱼C工作室学习到什么知识呢 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 # 如果用户选择Continue else: sys.exit(0) # 如果用户选择Cancel3. 的各种功能演示或者可以从 IDE例如 IDLE, , 等等上调用import easygui easygui.egdemo()如果成功进行调用, 那么就能够试着去尝试, 那些所拥有的各种各样的功能, 并且会把结果打印到控制台上去。4. 导入为了使用 这个模块你应该先导入它。最简单的导入语句是import easygui要是采用上面那般形式去导入, 那在你运用函数之际, 务必要于函数的前面添加上前缀, 如此这般:easygui.msgbox(...)另一种选择是导入整个 包from easygui import *这使得我们更容易调用 的函数可以直接这样编写代码msgbox(...)第三种方案是使用类似下边的 语句也是最推荐的用法import easygui as g这种方式能够使你维持, 的那种命名空间, 与此同时削减你的打字数目。导入之后就可以这么调用 的函数g.msgbox(...)5. 使用一旦, 你的模块被导入, 那么, GUI操作, 就成为了, 一个简单的, 调用函数的, 几个参数的, 问题了。例如使用 来实现世界上最著名的打招呼import easygui as g g.msgbox(Hello, world!)6. 函数的默认参数对于所有对话框而言前两个参数都是消息主体和对话框标题。在某种情境之下, 依据这个规律, 这或许并非理想的布局设计, 比如说, 当对话框在获取目录或者文件名之际, 会选择对消息参数予以忽略, 然而, 维持这种一致性, 并且在所有窗口部件中都贯穿这种一致性, 这是更为得体的考量绝大部分函数, 存在默认参数, 几乎所有组件, 会显示消息主体, 会显示对话框标题。标题默认是空字符串消息主体通常有一个简单的默认值。这致使你能够尽可能少地针对参数予以设置, 像是 () 这个函数标题部分的参数是具备可选择性的, 故此你在调用 ()之时仅仅只需去明确规定一个消息参数就行, 比如:g.msgbox(我爱小甲鱼^_^)当然, 你能够指定窗口的消息参数, 以及窗口标题, 后续的参数为标题, 比如:g.msgbox(我爱小甲鱼^_^, 鱼油心声)在各种各样的按钮组件当中, 默认呈现的消息是 “Shall I?”, 因而你能够不携带任何参数地去对它们进行调用。在此处, 我们进行演示, 以不带任何参数的方式去调用ccbox(), 在选择“”或者关闭窗口之际, 返回一个属于布尔类型的值:if ccbox(): pass # 用户选择继续 else: return # 用户选择取消7. 使用关键字参数调用 的函数调用 函数还可以使用关键字参数哦。此时假定你要运用一个按钮组件, 然而您不想界定标题参数, 也就是第二个参数, 您依旧能够采用关键字参数的方式来指定参数, 即第三个参数, 如下这般:choices [愿意, 不愿意, 有钱的时候就愿意] reply g.choicebox(你愿意购买资源打包支持小甲鱼吗, choices choices)8. 使用按钮组件根据需求 在 () 上建立了一系列的函数供调用。8.1 ()msgbox(msg(Your message goes here), title , ok_buttonOK, imageNone, rootNone)8.2 ccbox()ccbox(msgShall I continue?, title , choices(C[o]ntinue, C[a]ncel), imageNone, default_choiceC[o]ntinue, cancel_choiceC[a]ncel)ccbox()给出一种选择, 是“”这种情况, 还是“Cncel”这种情况, 并且会对应返回True, 或者返回False。留意啦, “”其中的 代表快捷键, 这意味着, 当用户于键盘之上敲一下 o 字符时, 就等同于点击了 “” 按键。8.3 ynbox()ynbox(msgShall I continue?, title , choices([]Yes, []No), imageNone, default_choice[]Yes, cancel_choice[]No)和ccbox()相同, 只是此处默认的参数值不一样, 意味着要是把键盘上的F1功能按键当作 “Yes”的快捷键来运用。8.4 ()buttonbox(msg, title , choices(Button[1], Button[2], Button[3]), imageNone, imagesNone, default_choiceNone, cancel_choiceNone, callbackNone, runTrue)能够运用 () 去界定属于自身的一组按钮, () 将会呈现出一组经由你自行定义的按钮。当用户点击任意一个按钮的时候() 返回按钮的文本内容。要是用户进行点击取消这一操作, 或者实施关闭窗口这个行为, 那么便会返回默认的选项那就是第一个选项。请看例子g.buttonbox(msg你喜欢哪种水果, title , choices(香蕉, 苹果, 葡萄), )8.5 ()indexbox(msgShall I continue?, title , choices(Yes, No), imageNone, default_choiceYes, cancel_choiceNo)基本上跟是相同的情形, 可不同的地方在于, 当用户挑选第一个按钮之时会返回序号0这样的情况发生, 而在用户选择第二个按钮的时候就会出现返回序号1这种状况。8.6 ()boolbox(msgShall I continue?, title , choices([Y]es, [N]o), imageNone, default_choiceYes, cancel_choiceNo)倘若第一个按钮被选定, 那么就返回 True, 要是不然, 那就返回 False。9. 如何在 里边显示图片当你去调用一个函数时, 像是 () 这样的, 又或者是 ynbox() 这样的, 再或者是 () 等等, 如果是这样的情况, 在此期间, 你能够去为关键字参数 image 进行赋值操作, 赋值的时候, 你可以去设置一个以 .gif 格式存在的图像, 当然了, PNG 格式的图像那里也是对其予以支持的哦_。buttonbox(大家说我长得帅吗, imageturtle.gif, choices(帅, 不帅, !#$%))10. 为用户提供一系列选项10.1 ()choicebox(msgPick an item, title, choices[], preselect0, callbackNone, runTrue)按钮组件便于给用户提供一个不复杂的按钮选项, 然而要是存在众多选项, 又或者选项内容极为冗长, 那么更佳的策略是为它们递交一个可供选择的列表。其中某事物给用户给出了一个作选择的列表, 将序列也即元祖或者列表用作选项, 这些选项会依照字母予以排序。另外, 还能够运用键盘去挑选其中的一个选项, 比较让人纠结然而丝毫都不重要:例如, 当按下键盘上的“g”键时, 将会选中第一个以“g”开头的选项。再次按下“g”键, 就会选中下一个以“g”开头的选项。在选中最后一个以“g”开头的选项之际, 再次按下“g”键将会重新回到列表开头的第一个以“g”开头的选项。要是选项里头不存在以 “g” 作为开头的, 那么就会去挑选字符排序处在 “g” 之前的那个字符开头即意味着是位于 “f”的那个选项咯标点符号要是选项里并未存在在“g”之前进行字符排序的情况, 那么于列表当中, 第一个元素就会被选中。10.2 ()multchoicebox(msgPick an item, title, choices[], preselect0, callbackNone, runTrue)(某一个)函数同样给出一个能够进行选择的列表, 和(另一个)有所不一样的地方在于, (前边提到的这个函数)允许用户挑选0个, 还可以挑选1个, 或者能够同时选取多个选项。函数使用序列, 序列是元祖或者列表, 这些序列作为选项, 在这些选项显示之前, 会按照不区分大小写的方式排好序。11. 让用户输入消息11.1 ()enterbox(msgEnter something., title , default, stripTrue, imageNone, rootNone)提供一个面向用户最简单的输入框, 其得出的返回值是用户所输入的字符串。返回的值若为默认, 会自动将首尾的空格给去除掉, 要是有保留首尾空格这种需求的话, 那么请把参数strip设置成False。11.2 ()integerbox(msg, title , defaultNone, lowerbound0, upperbound99, imageNone, rootNone)为用户供给一个简易的输入框, 用户仅能够输入在所规定范围内参数设定的最小值, 参数设定的最大值的整型数值, 不然就会要求用户再度输入。11.3 ()multenterbox(msgFill in values for the fields., title , fields[], values[], callbackNone, runTrue)() 为用户提供多个简单的输入框要注意以下几点要是用户所输入的值比选项少, 那么就返回列表里的值, 用空字符串去填充用户未输入的选项。倘若用户所输入的值要比选项的数量多, 那么返回于列表当中的值呀, 便会被截断成选项当前所拥有的数量。如果用户取消操作则返回域中的列表的值或者 None 值。12. 让用户输入密码有可能在某些时候, 需要促使使用者去键入密码这类性质敏感的信息, 如此一来呈现出来的界面好像是这般模样: *******。12.1 ()passwordbox(msgEnter your password., title , default, imageNone, rootNone)它和它样式相同, 有差异的是, 用户所输入的内容采取星号来显示, 此函数回返回用户输入进来的字符串。12.2 ()(msg等于‘为了那个而填写。’, title等于‘ ’, 等于(), 等于(), 等于None, run等于True)。, 运用一样的接口 , 然而在它开展显示动作之际 , 末尾的那个输入框呈现为密码形态 *标点符号:13. 显示文本还提供函数用于显示文本。13.1 ()textbox(msg, title , text, codeboxFalse, callbackNone, runTrue)有一种函数, 其默认的情况之下, 会运用比例字体去呈现文本内容, 而若将参数设定为等于正确, 也就是将其设置为等宽字体, 那么它就会以这种字体来进行文本内容的显示, 并且会自动进行换行, 此函数适宜被用于展示一般的书面文字。请注意, text参数用于设置可编辑文本区域的内容, 它能够是字符串类型, 也能够是列表类型, 还能够是元祖类型。13.2 ()codebox(msg, title , text)文本内容以等宽字体显示, 且不自动换行, 这种情况相当于将相关属性设置为等于True。注等宽字体很丑的但适合代码编写不信你试试看14. 目录与文件在 GUI 编程里, 有一个常见场景, 那就是需要用户去输入目录, 并且还要输入文件名, 然后呢还提供了一些用于让用户浏览文件系统的基本函数, 以便能从中选择一个目录, 或者选择一个文件。14.1 ()diropenbox(msgNone, titleNone, defaultNone)有的函数, 它的用途是去提供出一个对话框, 这个目的达成之后, 会返回由用户所选择的目录名, 并且是带有完整路径的那种哦, 要是用户做出的选择是“”这种情况, 那么它返回的结果则是None。参数用于设置默认的打开目录请确保设置的目录已存在。14.2 ()fileopenbox(msgNone, titleNone, default*, filetypesNone, multipleFalse)有这样一种函数它的作用是去提供出一个对话框, 这个对话框所起到的作用是返回由用户所选择的那种带有完整路径的文件名, 要是出现用户选择的是“”这种情况, 那么所返回的结果就是None。关于 参数的设置方法参数指定一个默认路径通常包含一个或多个通配符。如果设置了 参数() 显示默认的文件路径和格式。默认的参数是 ‘*’即匹配所有格式的文件。例如defaultc:/fishc/*.py 即显示 C:\fishc 文件夹下所有的 Python 文件。 defaultc:/fishc/test*.py 即显示 C:\fishc 文件夹下所有的名字以 test 开头的 Python 文件。关于 参数的设置方法可以是包含文件掩码的字符串列表例如 能够是字符串构成的列表, 此列表之中处于最后位置的那一项字符串是对于文件类型的一种描述, 举例说明, 等于。.css,.htm, .html, “HTML files”最终的部分是, 参数要是它的值为, 那就意味着能够同时挑选多个文件。14.3 ()filesavebox(msgNone, titleNone, default, filetypesNone)有一种函数, 它能够给出一个对话框, 这个对话框是用来让使用者去挑选文件所要保存的路径的, 记得是带上完整路径的那种哦, 如果使用者选取了空白的这个选项, 那么就会返回一个代表无的结果。参数应当涵盖一个文件名, 如当下要进行保存的那个文件名, 当然它也是能够被设置成空的, 或者包含一个带有文件格式掩码的通配符。参数的设置方法请参考 () 函数。15. 记住用户的设置15.1在GUI编程里, 有个普遍见到的情形, 那便是要求用户去设置一回参数, 接着把这些设置留存下来, 从而当之后用户再度运用你的程序之时, 能够记起他所做的设置。朝着达成针对用户的设置予以存储以及恢复这一进程, 给出了一个称作 的类。为了将某些设置给记住, 你的应用程序得去定义一个类, 这个类在下面案例里是用引号标注的, 它要继承自类。接着, 你的应用程序需要去创建一个属于该类的被实例化了的对象, 也就是下面案例里头的那个“”。用于设置的类的构造函数, 也就是 init 方法, 一定要对所有你期望它去记住的那些具体的值进行初始化。一旦你施行这般举措, 你便能于对象里头借由设定数值去使变量实例化, 进而以极为简易的方式记住设置。之后使用 .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)16. 捕获异常exceptionbox()在用编写 GUI 程序之际, 有时难以避免地会出现异常, 当然这是由你运行应用程序的方式所决定的, 当你的应用程序出现崩溃之时, 堆栈追踪有可能会被抛出, 或者会被写入到标准输出函数里边。通过 () 函数提供了更好的方式去处理异常。当出现异常状况之际, 会把堆栈追踪呈现于一个里头, 且准许你去实施更深入的处置。() 很容易使用下面举个例子try: print(I Love FishC.com!) int(FISHC) # 这里会产生异常 except: exceptionbox()