目录
11.1
13.1
13.2
14.1
4
6
7
9.2
9.3
9.4
9.5
9.6
buttonbox()................................................................................................................. 8
9 使用按钮组件......................................................................................................................7
3 一个简单的例子................................................................................................................3
1 安装EasyGui.................................................................................................................... 3
2 建议不要在IDLE 上运行EasyGui................................................................................3
EasyGui 的各种功能演示................................................................................................ 4
5 导入EasyGui.................................................................................................................... 5
使用EasyGui................................................................................................................ 5
EasyGui 函数的默认参数................................................................................................ 6
8 使用关键字参数调用EasyGui 的函数..........................................................................6
9.1 msgbox().................................................................................................................... 7
ccbox()........................................................................................................................8
ynbox()....................................................................................................................... 8
indexbox()................................................................................................................9
boolbox()....................................................................................................................9
10. 如何在buttonbox 里边显示图片................................................................................ 9
choicebox()............................................................................................................ 10
11.2 multchoicebox().....................................................................................................11
enterbox().............................................................................................................. 12
integerbox()........................................................................................................... 12
passwordbox().....................................................................................................13
multpasswordbox().............................................................................................14
textbox().................................................................................................................14
11. 为用户提供一系列选项...............................................................................................10
12. 让用户输入消息...........................................................................................................12
13 让用户输入密码............................................................................................................13
14. 显示文本.......................................................................................................................14
12.3 multenterbox()........................................................................................................12
12.1
12.2
15. 目录与文件...................................................................................................................15
codebox()............................................................................................................... 15
diropenbox()..........................................................................................................15
fileopenbox()..........................................................................................................16
filesavebox().......................................................................................................... 17
14.2
15.1
15.2
15.3
16. 记住用户的设置.........................................................................................................18
EgStore................................................................................................................................. 18
17. 捕获异常.......................................................................................................................19
翻译改编自官方文档:http://easygui.sourceforge.net/tutorial/index.html
翻译改编者:小甲鱼,本文欢迎转载,转载请保证原文的完整性!
演示使用 Python 3.3.3 版本
安装EasyGui
官网:http://easygui.sourceforge.net
easygui-0.96.zip
最新版:
使用标准方法安装:
使用命令窗口切换到 easygui-docs-0.96 的目录下
【Windows 下】执行 C:\Python33\python.exe setup.py install
【Linux 或 Mac 下】sudo /usr/bin/python33 setup.py install
建议不要在IDLE 上运行EasyGui
1
2
EasyGui 是运行在 Tkinter 上并拥有自身的事件循环,而 IDLE 也是 Tkinter
写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可
能会发生冲突,且带来不可预测的结果。因此如果你发现你的 EasyGui 程序有
这样的问题,请尝试在 IDLE 外去运行你的程序。
3 一个简单的例子
在 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 that we convert choice to string, in case
# the user cancelled the choice, and we got None.
g.msgbox("你的选择是: " + str(choice), "结果")
msg = "你希望重新开始小游戏吗?"
title = "请选择"
# user chose Continue
if g.ccbox(msg, title):
pass
else:
sys.exit(0)
# user chose Cancel
# show a Continue/Cancel dialog
4
EasyGui 的各种功能演示
要运行 EasyGui 的演示程序,在命令行调用 EasyGui 是这样的:
C:\Python33\python.exe easygui.py
或者你可以从 IDE(例如 IDLE, PythonWin, Wing, 等等)上来调用:
>>> import easygui as g
>>> g.egdemo()
成功调用后你将可以尝试 EasyGui 拥有的各种功能,并将你选择的结果打印至
控制台。
5
导入EasyGui
为了使用 EasyGui 这个模块,你应该先导入它。最简单的导入语句是:
import easygui
如果你使用上面这种形式导入的话,那么你使用 EasyGui 的函数的时候,必须
在函数的前面加上前缀 easygui,像这样:
easygui.msgbox(...)
另一种选择是导入整个 EasyGui 包:
from easygui import *
这使得我们更容易调用 EasyGui 的函数,你可以直接这样编写代码:
msgbox(...)
第三种方案是使用类似下边的 import 语句:
import easygui as g
这样可以让你保持 EasyGui 的命名空间,同时减少你的打字数量。导入之后你
就可以这么调用 EasyGui 的函数:
g.msgbox(...)
6 使用EasyGui
一旦你的模块导入 EasyGui,GUI 操作就是一个简单的调用 EasyGui 函数的几
个参数的问题了。
例如,使用 EasyGui 来实现著名的“你好,世界!”程序是这样的:
import easygui as g
g.msgbox("Hello, world!")
7
EasyGui 函数的默认参数
对于所有函数而言,前两个参数是消息和标题。按照这个规律,在某种情况下,
这可能不是最有利于用户的安排(例如,对话框在获取目录和文件名的时候忽略
消息参数),但我觉得保持这种一致性贯穿于所有的窗口部件是一种更为重要的
考虑!
绝大部分的 EasyGui 函数都有默认参数,几乎所有的组件都会显示一个消息和
标题。标题默认是空字符串,信息通常有一个简单的默认值。
这使得你可以尽量少的去设置参数,比如 msgbox() 函数标题部分的参数就是可
选的,所以你调用 msgbox() 的时候可以只指定一个消息参数,例如:
>>> msgbox('我爱小甲鱼^_^')
当然你也可以指定标题参数和消息参数,例如:
>>> msgbox('我爱小甲鱼^_^', '鱼油心声')
在各类按钮组件里,默认的消息是"Shall I continue?",所以你可以不带任何
参数地去调用它们。这里我们演示不带任何参数地去调用 ccbox(),当选择"ca
ncel"或关闭窗口的时候返回一个布尔类型的值:
if ccbox():
pass
else:
return
# user chose to continue
# user chose to cancel
8
使用关键字参数调用EasyGui 的函数
调用 EasyGui 函数还可以使用关键字参数哦。(如忘了的童鞋翻出《零基础入门
学习 Python》第 18 讲自行脑补)
现在假设你需要使用一个按钮组件,但你不想指定标题参数(第二个参数),你
仍可以使用关键字参数的方法指定 choices 参数(第三个参数),像这样:
>>> choices = ['愿意', '不愿意', '有钱的时候愿意']
>>> reply = choicebox('你愿意购买资源打包支持小甲鱼吗?', choices =
choices)
9 使用按钮组件
根据需求,EasyGui 在 buttonbox() 上建立了一系列的函数供调用。
9.1 msgbox()
msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', ima
ge=None, root=None)
msgbox() 显示一个消息和提供一个"OK"按钮,你可以指定任意的消息和标题,
你甚至可以重写"OK"按钮的内容。
以下是 msgbox() 的实例函数:
def msgbox(msg="(Your message goes here)", title="", ok_button="OK"):
....
重写"OK"按钮最简单的方法是使用关键字参数:
>>> msgbox("我一定要学会编程!", ok_button="加油!")
9.2
ccbox()
ccbox(msg='ShallIcontinue?',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:
sys.exit(0) # 记得先 import sys 哈
9.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() 返回按钮的文本内容。如果用户
取消取消或者关闭窗口,那么会返回默认选项(第一个选项)。请看例子:
9.4
buttonbox()
buttonbox(msg='',title='',choices=('Button1','Button2','Button3'),
image=None, root=None)
可以使用 buttonbox() 定义自己的一组按钮,buttonbox() 会显示一组你定义