什么是 EasyGUI
EasyGUI 是 Python 中一个非常简单的 GUI 编程模块,不同于其他的 GUI 生成器,它不是事件驱动的。相反,所有的 GUI 交互都是通过简地函数调用就可以实现。
EasyGUI 为用户提供了简单的 GUI 交互接口,不需要程序员知道任何有关 tkinter,框架,部件,回调或 lambda 的任何细节。
EasyGUI 可以很好地兼容 Python 2 和 3,并且不存在任何依赖关系。
EasyGUI 是运行在 Tkinter 上并拥有自身的事件循环,而 IDLE 也是 Tkinter 写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可能会发生冲突,且带来不可预测的结果。因此如果你发现你的 EasyGUI 程序有这样的问题,请尝试在 IDLE 外去运行你的程序。
我自己使用的是pycharm编辑器,以下记录在pycharm中导入EasyGUI包
- 使用pip进行安装EasyGUI
打开命令行窗口,输入 pip install easygui 即可
- 打开pycharm中file–settings
单击+按钮:
这样就添加成功了
接下来下一段代码实现以下吧:
import easygui as g
import sys
while 1:
g.msgbox("嗨,欢迎进入点单界面")
msg = "请问你想喝什么咖啡?"
title = "点单"
choices = ["焦糖玛奇朵", "香草馥芮白", "手冲", "卡布奇诺"]
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) # 如果用户选择Cancel
EasyGUI 的各种功能演示
要运行 EasyGUI 的演示程序,在命令行调用 EasyGUI 是这样的:
python easygui.py
或者可以从 IDE(例如 IDLE, PythonWin, Wing, 等等)上调用:
>>> import easygui
>>> easygui.egdemo()
成功调用后将可以尝试 EasyGUI 拥有的各种功能,并将结果打印至控制台。
导入 EasyGUI
为了使用 EasyGUI 这个模块,你应该先导入它。
最简单的导入语句是:
import easygui
如果使用上面这种形式导入的话,那么你使用 EasyGUI 的函数的时候,必须在函数的前面加上前缀 easygui,像这样:
easygui.msgbox(...)
另一种选择是导入整个 EasyGUI 包:
from easygui import *
这使得我们更容易调用 EasyGUI 的函数,可以直接这样编写代码:
msgbox(...)
第三种方案是使用类似下边的 import 语句:
import easygui as g
这种方法还可以让你保持 EasyGUI 的命名空间,同时减少你的打字数量。
导入之后就可以这么调用 EasyGUI 的函数:
g.msgbox(...)
使用 EasyGUI
一旦你的模块导入 EasyGUI,GUI 操作就是一个简单的调用 EasyGUI 函数的几个参数的问题了。
例如,使用 EasyGUI 来实现世界上最著名的打招呼:
import easygui as g
g.msgbox("Hello, world!")
EasyGUI 函数的默认参数
对于所有对话框而言,前两个参数都是消息主体和对话框标题。
按照这个规律,在某种情况下,这可能不是理想的布局设计(比如当对话框在获取目录或文件名的时候会选择忽略消息参数),但保持这种一致性且贯穿于所有的窗口部件是更为得体的考虑!
绝大部分的 EasyGUI 函数都有默认参数,几乎所有的组件都会显示消息主体和对话框标题。
标题默认是空字符串,消息主体通常有一个简单的默认值。
这使得你可以尽可能少的去设置参数,比如 msgbox() 函数标题部分的参数是可选的,因此你调用 msgbox() 的时候只需要指定一个消息参数即可,例如:
>>> msgbox('我的第一个EasyGUI')
当然也可以指定标题参数和消息参数,例如:
from easygui import *
msgbox('我的第一个EasyGUI', '哈哈')
运行显示:
在各类按钮组件里,默认的消息是 “Shall I continue?”,所以可以不带任何参数地去调用它们。
这里演示不带任何参数地去调用 ccbox(),当选择 “cancel” 或关闭窗口的时候返回一个布尔类型的值:
if ccbox():
pass # 用户选择继续
else:
return # 用户选择取消
使用关键字参数调用 EasyGUI 的函数
调用 EasyGUI 函数还可以使用关键字参数。
现在假设需要使用一个按钮组件,但你不想指定标题参数(第二个参数),仍可以