0.安装EasyGui官网:最新版:easygui-0.96.zip(141.61KB,下载次数:2300)使用标准方法安装:使用命令窗口切换到easygui-docs-0.96的目录下【Windows下】执行C:\Python33\python.exesetup.pyinstall【Linux或Mac下】sudo/usr/bin/python33setup.pyinstall1.建议不要在IDLE上运行EasyGuiEasyGui是运行在Tkinter上并拥有自身的事件循环,而IDLE也是Tkinter写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可能会发生冲突,且带来不可预测的结果。因此如果你发现你的EasyGui程序有这样的问题,请尝试在IDLE外去运行你的程序。2.一个简单的例子在EasyGui中,所有的GUI互动均是通过简单的函数调用,下边一个简单的例子告诉你EasyGui确实很Easy!1.importeasyguiasg2.importsys3.4.while1:5.g.msgbox(嗨,欢迎进入第一个界面小游戏^_^)6.7.msg=请问你希望在鱼C工作室学习到什么知识呢?8.title=小游戏互动9.choices=[谈恋爱,编程,OOXX,琴棋书画]10.11.choice=g.choicebox(msg,title,choices)12.13.#notethatweconvertchoicetostring,incase14.#theusercancelledthechoice,andwegotNone.15.g.msgbox(你的选择是:+str(choice),结果)16.17.msg=你希望重新开始小游戏吗?18.title=请选择19.20.ifg.ccbox(msg,title):#showaContinue/Canceldialog21.pass#userchoseContinue22.else:23.sys.exit(0)#userchoseCancel24.复制代码3.EasyGui的各种功能演示要运行EasyGui的演示程序,在命令行调用EasyGui是这样的:1.C:\Python33\python.exeeasygui.py复制代码或者你可以从IDE(例如IDLE,PythonWin,Wing,等等)上来调用:1.importeasyguiasg2.g.egdemo()复制代码成功调用后你将可以尝试EasyGui拥有的各种功能,并将你选择的结果打印至控制台。4.导入EasyGui为了使用EasyGui这个模块,你应该先导入它。最简单的导入语句是:1.importeasygui复制代码如果你使用上面这种形式导入的话,那么你使用EasyGui的函数的时候,必须在函数的前面加上前缀easygui,像这样:1.easygui.msgbox(...)复制代码另一种选择是导入整个EasyGui包:1.fromeasyguiimport*复制代码这使得我们更容易调用EasyGui的函数,你可以直接这样编写代码:1.msgbox(...)复制代码第三种方案是使用类似下边的import语句:1.importeasyguiasg复制代码这样可以让你保持EasyGui的命名空间,同时减少你的打字数量。导入之后你就可以这么调用EasyGui的函数:1.g.msgbox(...)复制代码5.使用EasyGui一旦你的模块导入EasyGui,GUI操作就是一个简单的调用EasyGui函数的几个参数的问题了。例如,使用EasyGui来实现著名的“你好,世界!”程序是这样的:1.importeasyguiasg2.g.msgbox(Hello,world!)复制代码6.EasyGui函数的默认参数对于所有函数而言,前两个参数是消息和标题。按照这个规律,在某种情况下,这可能不是最有利于用户的安排(例如,对话框在获取目录和文件名的时候忽略消息参数),但我觉得保持这种一致性贯穿于所有的窗口部件是一种更为重要的考虑!绝大部分的EasyGui函数都有默认参数,几乎所有的组件都会显示一个消息和标题。标题默认是空字符串,信息通常有一个简单的默认值。这使得你可以尽量少的去设置参数,比如msgbox()函数标题部分的参数就是可选的,所以你调用msgbox()的时候可以只指定一个消息参数,例如:1.msgbox('我爱小甲鱼^_^')复制代码当然你也可以指定标题参数和消息参数,例如:1.msgbox('我爱小甲鱼^_^','鱼油心声')复制代码在各类按钮组件里,默认的消息是ShallIcontinue?,所以你可以不带任何参数地去调用它们。这里我们演示不带任何参数地去调用ccbox(),当选择cancel或关闭窗口的时候返回一个布尔类型的值:1.ifccbox():2.pass#userchosetocontinue3.else:4.return#userchosetocancel复制代码7.使用关键字参数调用EasyGui的函数调用EasyGui函数还可以使用关键字参数哦。(如忘了的童鞋翻出《零基础入门学习Python》第18讲自行脑补)现在假设你需要使用一个按钮组件,但你不想指定标题参数(第二个参数),你仍可以使用关键字参数的方法指定choices参数(第三个参数),像这样:1.choices=['愿意','不愿意','有钱的时候愿意']2.reply=choicebox('你愿意购买资源打包支持小甲鱼吗?',choices=choices)复制代码8.使用按钮组件根据需求,EasyGui在buttonbox()上建立了一系列的函数供调用。8.1msgbox()msgbox(msg='(Yourmessagegoeshere)',title='',ok_button='OK',image=None,root=None)msgbox()显示一个消息和提供一个OK按钮,你可以指定任意的消息和标题,你甚至可以重写OK按钮的内容。以下是msgbox()的实例函数:1.defmsgbox(msg=(Yourmessagegoeshere),title=,ok_button=OK):2.....复制代码重写OK按钮最简单的方法是使用关键字参数:1.msgbox(我一定要学会编程!,ok_button=加油!)复制代码8.2ccbox()ccbox(msg='ShallIcontinue?',title='',choices=('Continue','Cancel'),image=None)ccbox()提供一个选择:Continue或者Cancel,并相应的返回1(选中Continue)或者0(选中Cancel)。注意ccbox()是返回整型的1或0,不是布尔类型的True或False。但你仍然可以这么写:1.ifccbox('要再来一次吗?',choices=('要啊要啊^_^','算了吧T_T')):2.msgbox('不给玩了,再玩就玩坏了......')3.else:4.sys.exit(0)#记得先importsys哈复制代码8.3ynbox()ynbox(msg='ShallIcontinue?',title='',choices=('Yes','No'),image=None)同上,都不知作者设计这两玩意儿搞啥......8.4buttonbox()buttonbox(msg='',title='',choices=('Button1','Button2','Button3'),image=None,root=None)可以使用buttonbox()定义自己的一组按钮,buttonbox()会显示一组你定义好的按钮。当用户点击任意一个按钮的时候,buttonbox()返回按钮的文本内容。如果用户取消取消或者关闭窗口,那么会返回默认选项(第一个选项)。请看例子:8.5indexbox()indexbox(msg='ShallIcontinue?',title='',choices=('Yes','No'),image=None)基本跟上边一样,区别就是当用户选择第一个按钮的时候返回序号0,选择第二个按钮的时候返回序号1。8.6boolbox()boolbox(msg='ShallIcontinue?',title='',choices=('Yes','No'),image=None)如果第一个按钮被选中则返回1,否则返回0。9.如何在buttonbox里边显示图片当你调用一个buttonbox函数(例如msgbox(),ynbox(),indexbox()等等)的时候,你还可以为关键字参数image赋值,这是设置一个.gif格式的图像(注意仅支持GIF格式哦):1.buttonbox('大家说我长得帅吗?',image='turtle.gif',choices=('帅','不帅','!@#$%'))复制代码10.为用户提供一系列选项10.1choicebox()choicebox(msg='Picksomething.',title='',choices=())按钮组件方便提供用户一个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,更好的策略是为它们提供一个可选择的列表。choicebox()为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。另外还可以使用键盘来选择其中一个选项(比较纠结,但一点儿都不重要):例如当按下键盘上的g键,将会选中的第一个以g开头的选项。再次按下g键,则会选中下一个以g开头的选项。在选中最后一个以g开头的选项的时候,再次按下g键将重新回到在列表的开头的第一个以g开头的选项。如果选项中没有以g开头的,则会选中字符排序在g之前(f)的那个字符开头的选项如果选项中没有字符的排序在g之前的,那么在列表中第一个元素将会被选中。综合我们之前学习的文件功能,举个高达上的例子(源代码在第35讲的课后作业中^_^):10.2multchoicebox()multchoicebox(msg='Pickasmanyitemsasyoulike.',title='',choices=(),**kwargs)multchoicebox()函数也是提供一个可选择的列表,与choicebox()不同的是,multchoicebox()支持用户选择0个,1个或者同时选择多个选项。multchoicebox()函数也是使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。11.让用户输入消息11.1enterbox()enterbox(msg='Entersomething.',title='',default='',strip=True,image=None,root=None)enterbox()为用户提供一个最简单的输入框,返回值为用户输入的字符串。默认返回的值会自动去除首尾的空格,如果需要保留首尾空格的话请设置参数strip=False。11.2integerbox()integerbox(msg='',title='',default='',lowerbound=0,upperbound=99,image=None,root=None,**invalidKeywordArguments)integerbox()为用户提供一个简单的输入框,用户只能输入范围内(lowerbound参数设置最小值,upperbound参数设置最大值)的整型数值,否则会要求用户重新输入。11.3multenterbox()multenterbox(msg='Fillinvaluesforthefields.',title='',fields=([list]),values=())例:list1=['用户名:'