《EasyGui学习文档中文版.docx》由会员分享,可在线阅读,更多相关《EasyGui学习文档中文版.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、0.安装 EasyGui官网:最新版:Beasygui-0.96.zip(747.67下载次数:2300)使用标准方法安装: 使用命令窗口切换到easygui-docs-0.96的目录下 Windows T1 执彳亍 C:Python33python.exe setup.py install 【Linux 或 Mac 下】sudo /usr/bin/python33 setup.py install.建议不要在IDLE上运行EasyGuiEasyGui是运行在Tkinter上并拥有自身的事件循环,而IDLE也是Tkinter写的一个应 用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有
2、可能会发生冲突,且带来 不可预测的结果。因此如果你发现你的EasyGui程序有这样的问题,请尝试在IDLE外去 运行你的程序。1 . 一个简单的例子在EasyGui中,所有的GUI互动均是通过简单的函数调用,下边一个简单的例子告诉你 EasyGui 确实很 Easy!1. import easygui as g2. import sys3.4. while 1:5. g.msgbox(嗨,欢迎进入第一个界面小游戏八_八”)6.7. msg上请问你希望在鱼C工作室学习到什么知识呢? ”8. title = 小游戏互动”9. choices =谈恋爱,“编程”,“OOXX,“琴棋书画”10.11.
3、 choice = g.choicebox(msg, title, choices)12.13. # note that we convert choice to string, in case账号中心【真实姓名】为必填项。手机号码】为必填项0*E-mail为必填项。用户名小甲鱼嗔实姓名固定 QQ*E-mailOKCancel12.让用户输入密码有时候我们需要让用户输入密码,就是用户输入的东西看上去都是”*,721 passwordboxf)passwordbox(msg=Enter your password. title-;default,image=None, root=None)pas
4、swordbox()跟enterbox()样式一样,不同的是用户输入的内容用“*”显示出来,返回用 户输入的字符串:请输入密码:*Cancel pas5wordbox(请输入容码:) ilovefishc 12.2 multpasswordboxf)multpasswordboxfmsgFill in values for the fields. title = ; fields=(), values=()multpasswordbox()跟multenterbox()使用相同的接口,但当它显示的时候,最后一个输 入框显示为密码的形式(”*”):请输入用户名和空用:用户名:容码:小甲鱼*0KC
5、ancel.显示文本EasyGui还提供函数用于显示文本。13.1 textboxf)textbox(msg=n, title= text, codebox=0) 例:g.textbox(text= open(E:新建文本文档.txt;巧) testbox()函数默认会以比例字体(参数codebox=1设置为等宽字体)来显示文本内容(会 自动换行哦),这个函数适合用于显示一般的书面文字。注:text参数(第三个参数)可以是字符串类型,列表类型,或者元祖类型。失显示文件内容文件【record.txt】的内容如下:港服:小甲鱼,今天有客户问你有没有女朋友?小甲鱼:咦? ?/港服:我跟她说你有女朋友
6、了 !小甲Jo。/港服:她让你分手后考虑下她!然后我说:,您要买个优盘,我就帮您留意下.小甲鱼:然后呢?港服:她买了两个,说发一个货就好小甲鱼:呃你真牛!/港服:那是,谁让我是鱼C最可爱港服嘛小甲鱼:下次有人想调戏你我不阻止小客服:滚! ! !宿服:小甲鱼,有个好评很好笑哈。小甲鱼:哦?/售服:有了小甲鱼,以后妈始再也不用担忧我的学习了.小甲鱼:哈哈哈,我看到Y ,我逐发微博了呢港服:嗯嗯,我看了你的微博Y小甲鱼:哟西港服:那个有条回爰“左手拿著小甲角-右手拿著打火横,明灌不畲粘丽寇,so easy人_八”小甲鱼:T_T/港服:小甲鱼,今天一个会员想找你小甲鱼:哦?什么事?港服:他说你一个学生
7、月薪已经超过12k了! 小甲鱼哪里的?13.2 codeboxf)codebox(msg=n, title= ; text二)codebox()以等宽字体显示文本内容,相当于textbox(codebox=1)注:等宽字体很丑的,不信你试试看_14 .目录与文件GUI编程中一个常见的场景是要求用户输入目录及文件名,EasyGui提供了一些基本函数 让用户来浏览文件系统,选择一个目录或文件。14.1 diropenboxf)diropenbox(msg=None, title=None, default=None)diropenbox()函数用于提供一个对话框,返回用户选择的目录名(带完整路径哦
8、),如果 用户选择”Cancel”那么返回None。default参数用于设置默认的翻开目录(请确保设置的目录已存在)。14.2 fileopenboxf)fileopenbox(msg=NoneJ title=None, default*, filetypes=None) fileopenbox()函数用于提供一个对话框,返回用户选择的文件名(带完整路径哦),如果 用户选择Cancer那么返回None。关于default参数的设置方法: default参数指定一个默认路径,通常包含一个或多个通配符。 如果设置了 default参数,fileopenbox()显示默认的文件路径和格式。 def
9、ault默认的参数是即匹配所有格式的文件。例如: default=c:/fishc/*.py” 即显示 C:fishc 文件夹下所有的 Python 文件。 default=*c:/fishc/test*.pyH即显示C:fishc文件夹下所有的名字以test开头的Pyt hon文件。关于filetypes参数的设置方法: 可以是包含文件掩码的字符串列表,例如:filetypes = H*.txtn 可以是字符串列表,列表的最后一项字符串是文件类型的描述,例如:filetypes =【css”,“HTML files”14.3 filesaveboxf)filesavebox(msg=None
10、J title=None, default, filetypes=None)filesavebox()函数提供一个对话框,让用于选择文件需要保存的路径(带完整路径哦), 如果用户选择“Cancel”那么返回None。default参数应该包含一个文件名(例如当前需要保存的文件名),当然你也可以设置为空 的,或者包含一个文件格式掩码的通配符。filetypes参数的设置方法请参考上边。15.记住用户的设置15.1 EgStoreGUI编程中一个常见的场景就是要求用户设置一下参数,然后保存下来,以便下次用户使 用你的程序的时候可以记住他的设置。为了实现对用户的设置进行存储和恢复这一过程,EasyG
11、ui提供了一个叫做EgStore的 类。为了记住某些设置,你的应用程序必须定义一个类(暂时称之为“设置”类,尽管你随意 地使用你想要的名称设置它)继承自EgStore类。然后你的应用程序必须创立一个该类的对象(暂时称之为“设置”对象)。设置类的构造函数(init_方法)必须初始化所有的你想要它所记住的那些值。一旦你这样做了,你就可以在“设置”对象中通过设定值去实例化变量,从而很简单地记住设 置。之后使用settings.store()方法在硬盘上持久化设置对象。下面是创立一个“设置”类的例子:1. #2. # create settings1, a persistent Settings ob
12、ject3. # Note that the filename1 argument is required.4. # The directory for the persistent file must already exist.5. #settingsFilename = os.path.join(HC:, TishCApp, settings.txt*) # Windows ex ample6. settings = Settings(settingsFilename)复制代码下面是使用”设置“对象的例子:1. # we initialize the user and server va
13、riables2. # In a real application, wed probably have the user enter them via enterbox3. user = 奥巴马”4. server = 白宫”5.6. # we save the variables as attributes of the settings object7. settings.userid = user8. settings.targetServer = server9. settings.store() # persist the settings10.11. # run code tha
14、t gets a new value for userid12. # then persist the settings with the new value13. user = ”小甲鱼”14. settings.userid = user15. settings.store()复制代码16. 捕获异常exceptionboxf)使用EasyGui编写GUI程序,有时候难免会产生异常。当然这取决于你如何运行你的应 用程序,当你的应用程序崩溃的时候,堆栈追踪可能会被抛出,或者被写入到stdout标准 输出函数中。EasyGui通过exceptionbox()函数提供了更好的方式去处理异常,异常
15、出现的时候, exceptionbox()会显示堆栈追踪在一个codebox。中并且允许你做进一步的处理。exceptionbox()很容易使用,下面是一个例子:1. try:2. print(*l Love FishC !*)3. int(FISHC) #这里会产生异常4. except:5. exceptionbox()复制代码14. # the user cancelled the choice, and we got None.15. g.msgbox(你的选择是: + str(choice), ”结果。16.17. msg = 你希望重新开始小游戏吗?”18. title = 请选择
16、”19.20. if g.ccbox(msg5 title): # show a Continue/Cancel dialog21. pass # user chose Continue22. else:23. sys.exit(O) # user chose Cancel24. 复制代码3 . EasyGui的各种功能演示要运行EasyGui的演示程序,在命令行调用EasyGui是这样的:1. C:Python33python.exe easygui.py复制代码或者你可以从IDE (例如IDLE, PythonWin, Wing,等等)上来调用:2. import easygui as g
17、3. g.egdemo()复制代码成功调用后你将可以尝试EasyGui拥有的各种功能,并将你选择的结果打印至控制台。4 .导入 EasyGui为了使用EasyGui这个模块,你应该先导入它。最简单的导入语句是:1. import easygui复制代码如果你使用上面这种形式导入的话,那么你使用EasyGui的函数的时候,必须在函数的前 面加上前缀easygui,像这样:1. easygui.msgbox(.)复制代码另一种选择是导入整个EasyGui包:1. from easygui import *复制代码这使得我们更容易调用EasyGui的函数,你可以直接这样编写代码:1. msgboxj
18、.)复制代码第三种方案是使用类似下边的import语句:1. import easygui as g复制代码这样可以让你保持EasyGui的命名空间,同时减少你的打字数量。导入之后你就可以这么调用EasyGui的函数:1. g.msgbox(.)复制代码5 .使用 EasyGui一旦你的模块导入EasyGui, GUI操作就是一个简单的调用EasyGui函数的几个参数的 问题了。例如,使用EasyGui来实现著名的“你好,世界! ”程序是这样的:1. import easygui as g2. g.msgbox(HHello, world!)复制代码6 . EasyGui函数的默认参数对于所有
19、函数而言,前两个参数是消息和标题。按照这个规律,在某种情况下,这可能不是 最有利于用户的安排(例如,对话框在获取目录和文件名的时候忽略消息参数),但我觉得 保持这种一致性贯穿于所有的窗口部件是一种更为重要的考虑!绝大局部的EasyGui函数都有默认参数,几乎所有的组件都会显示一个消息和标题。标题默认是空字符串,信息通常有一个简单的默认值。这使得你可以尽量少的去设置参数,比方msgboxQ函数标题局部的参数就是可选的,所以 你调用msgbox()的时候可以只指定一个消息参数,例如:1. msgbox,我爱小甲鱼八_八)复制代码当然你也可以指定标题参数和消息参数,例如:1. msgbox。我爱小甲
20、鱼鱼油心声)复制代码点鱼湎心声我爱小甲鱼八_八OK在各类按钮组件里,默认的消息是“Shall I continue?”,所以你可以不带任何参数地去调用 它们。这里我们演示不带任何参数地去调用ccbox(),中选择cancel”或关闭窗口的时候返 回一个布尔类型的值:1. if ccbox():2. pass # user chose to continue3. else:4. return # user chose to cancel复制代码7 .使用关键字参数调用EasyGui的函数调用EasyGui函数还可以使用关键字参数哦。(如忘了的童鞋翻出零基础入门学习Python第18讲自行脑补)现
21、在假设你需要使用一个按钮组件,但你不想指定标题参数(第二个参数),你仍可以使用 关键字参数的方法指定choices参数(第三个参数),像这样:1. choices =愿意不愿意有钱的时候愿意2. reply = choicebox。你愿意购买资源打包支持小甲鱼吗? choices = choices)复制代码你愿意购买资源打包支持小甲鱼吗?XCancel不愿意息意有钱的时候愿意8,使用按钮组件根据需求,EasyGui在buttonbox()上建立了一系列的函数供调用。8 . 1 msgboxf)msgbox(msg=(Your message goes here), title*;ok_but
22、ton=VK, image=NoneJ root=None)msgbox()显示一个消息和提供一个“OK“按钮,你可以指定任意的消息和标题,你甚至可以 重写“0K”按钮的内容。以下是msgbox()的实例函数:1. def msgbox(msg=n(Your message goes here), title=, ok_button=nOKH):2. .复制代码重写“OK”按钮最简单的方法是使用关键字参数:1. msgbox(我一定要学会编程! ok_button=加油!”)复制代码1.2 ccbox()ccbox(msg=Shall I continue?, title, choices=(
23、,Continue,1 Cancel1), image=None)ccbox()提供一个选择:Continue或者Cancel,并相应的返回1 (选中Continue)或者0 (选中 Cancel)。注意ccbox()是返回整型的1或0,不是布尔类型的True或False。但你仍然可以这么 写:1. if ccbox(要再来一次吗? choices不要啊要啊八,算了吧T_T):2. msgbox。不给玩了,再玩就玩坏了)3. else:4. sys.exit(O) # 记得先 import sys 哈复制代码1.3 ynbox()ynbox(msg=Shall I continue?, tit
24、le;choices=(,Yes No), image=None)同上,都不知作者设计这两玩意儿搞啥buttonboxf)buttonbox(msg=u, title*choices=(,Button1 ,Button2,J Buttons), image=Nonef root=None)可以使用buttonbox()定义自己的一组按钮,buttonbox()会显示一组你定义好的按钮。当用户点击任意一个按钮的时候,buttonbox()返回按钮的文本内容。如果用户取消取消或 者关闭窗口,那么会返回默认选项(第一个选项)。请看例子:你喜欢以下哪一种水果?1.4 indexboxf)indexbo
25、x(msg=Shall I continue?t titlechoices=(YesJNo), image=None)基本跟上边一样,区别就是当用户选择第一个按钮的时候返回序号0,选择第二个按钮的 时候返回序号Kboolboxf)boolbox(msg=,Shall I continue?, title*, choices=(YesJ No), image=None)如果第一个按钮被选中那么返回1,否那么返回0o9 .如何在buttonbox里边显示图片当你调用一个buttonbox函数(例如msgbox(), ynbox(), indexbox()等等)的时候,你还 可以为关键字参数imag
26、e赋值,这是设置一个.gif格式的图像(注意仅支持GIF格式哦):1. buttonbox。大家说我长得帅吗? image=,turtle.gif, choices=(帅不帅!#$%)复制代码.为用户提供一系列选项9.1 choiceboxf)choicebox(msg=Pick something.; title-choices=() 按钮组件方便提供用户一个简单的按钮选项,但如果有很多项选择项,或者选项的内容特别长的 话,更好的策略是为它们提供一个可选择的列表。choicebox()为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选 项显示前会按照不区分大小写的方法排好序
27、。另外还可以使用键盘来选择其中一个选项(比拟纠结,但一点儿都不重要): 例如当按下键盘上的键,将会选中的第一个以开头的选项。再次按下“g“键,那么会选中下一个以“g”开头的选项。在选中最后一个以“g”开头的选项的时候,再次按下 键将重新回到在列表的开头的第一个以” g“开头的选项。 如果选项中没有以“g开头的,那么会选中字符排序在”g“之前(牛)的那个字符开头的选项 如果选项中没有字符的排序在“g”之前的,那么在列表中第一个元素将会被选中。综合我们之前学习的文件功能,举个高达上的例子(源代码在第35讲的课后作业中八_八):10.2 multchoiceboxf)multchoicebox(ms
28、g= Pick as many items as you like. title= ; choices=(), *kwargs)multchoicebox()函数也是提供一个可选择的列表,与choicebox()不同的是,multchoicebox()支持用户选择0个,1个或者同时选择多个选项。multchoicebox()函数也是使用序列(元祖或列表)作为选项,这些选项显示前会按照不区 分大小写的方法排好序。11.让用户输入消息enterboxf)enterbox(msg=Entersomething. titledefault, strip=True, image=None, root=N
29、one) enterbox()为用户提供一个最简单的输入框,返回值为用户输入的字符串。默认返回的值会 自动去除首尾的空格,如果需要保存首尾空格的话请设置参数strip=Falseo请给入一句你最想对小甲鱼说的话:赶紧更新视频,谢谢!OKCancelintegerboxf)integerbox(msg= title= defaults, lowerbound=0, upperbound=99f image=None, root=None, */nvalidKeywordArguments)integerbox。为用户提供一个简单的输入框,用户只能输入范围内(lowerbound参数设置 最小值,
30、upperbound参数设置最大值)的整型数值,否那么会要求用户重新输入。11.1 multenterboxf)multenterbox(msg= Fill in values for the fields. titlefields=(list), values=()Iist1=用户名:?密码g.multpasswordbox(msg=请输入用户名和密码title登录:fields=(list1)multenterbox()为用户提供多个简单的输入框,要注意以下几点: 如果用户输入的值比选项少的话,那么返回列表中的值用空字符串填充用户为输入的选项。 如果用户输入的值比选项多的话,那么返回的列表中的值将截断为选项的数量。 如果用户取消操作,那么返回域中的列表的值或者None值。实现如下列图(源代码在第35讲的课后作业中八_八):