如何使用python easygui 布局

资源链接:
3.5 下载地址:/s/1kVDDXWV
python2.7 下载地址:/s/1eScA0sM
pip 下载地址:/s/1hsiBXIW
easygui 下载地址:/s/1slNBiZr
一、安装easygui
easygui 是一个python 下的图形界面库,可以用几个简单的函数和固定参数生成图形界面。
要安装easygui,先下载python3.5或python2.7;我的使用python3.5。
然后下载easygui,解压压缩包后可见两个。
其中easygui_v0.93_docs是附带教程,打开easygui_v0.93/;把easygui.py复制张贴到python目录下的Lib目录下即可。
python目录下,双击python.在命令行里面输入import easygui,显示:
二、安装pygame
pygame用pip安装,只要一条语句就行pip install pygame。
1,设置环境变量,我的&&属性&&高级系统设置&&环境变量,找到path选项;添加python安装目录,用英文的分号隔开。
2,下载pip,解压压缩文件。
3,打开console控制台,cd到pip目录;执行python setup.py install;
4,安装完成后,在python的Scripts/目录下会生成pip.在环境变量里面添加pip.exe的安装目录。
5,打开console控制台,输入pip install pygame;即完成安装翻译改编自官方文档:翻译改编者:小甲鱼,本文欢迎转载,转载请保证原文的完整性!演示使用 Python 3.3.3 版本0. 安装 EasyGui官网:最新版: easygui-0.96.zip
18:33 上传
点击文件名下载附件
使用标准方法安装:
使用命令窗口切换到easygui-docs-0.96的目录下
【Windows下】执行C:\Python33\python.exe setup.py install
【Linux或Mac下】sudo /usr/bin/python33 setup.py install
1. 建议不要在 IDLE 上运行 EasyGuiEasyGui 是运行在 Tkinter 上并拥有自身的事件循环,而 IDLE 也是 Tkinter 写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可能会发生冲突,且带来不可预测的结果。因此如果你发现你的 EasyGui 程序有这样的问题,请尝试在 IDLE 外去运行你的程序。2. 一个简单的例子在 EasyGui 中,所有的 GUI 互动均是通过简单的函数调用,下边一个简单的例子告诉你 EasyGui 确实很 Easy!
import easygui as g
import sys
& && &&&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 = &请选择&
& && &&&if g.ccbox(msg, title):& &&&# show a Continue/Cancel dialog
& && && && && & pass&&# user chose Continue
& && &&&else:
& && && && && & sys.exit(0)& &&&# user chose Cancel
3. EasyGui 的各种功能演示要运行 EasyGui 的演示程序,在命令行调用 EasyGui 是这样的:
C:\Python33\python.exe easygui.py
或者你可以从 IDE(例如 IDLE, PythonWin, Wing, 等等)上来调用:
&&& import easygui as g
&&& g.egdemo()
成功调用后你将可以尝试 EasyGui 拥有的各种功能,并将你选择的结果打印至控制台。
1.png (15.58 KB, 下载次数: 3)
下载附件 &保存到相册
21:19 上传
4. 导入 EasyGui为了使用 EasyGui 这个模块,你应该先导入它。最简单的导入语句是:
import easygui
如果你使用上面这种形式导入的话,那么你使用 EasyGui 的函数的时候,必须在函数的前面加上前缀 easygui,像这样:
easygui.msgbox(...)
另一种选择是导入整个 EasyGui 包:
from easygui import *
这使得我们更容易调用 EasyGui 的函数,你可以直接这样编写代码:
msgbox(...)
第三种方案是使用类似下边的 import 语句:
import easygui as g
这样可以让你保持 EasyGui 的命名空间,同时减少你的打字数量。导入之后你就可以这么调用 EasyGui 的函数:
g.msgbox(...)
5. 使用 EasyGui一旦你的模块导入 EasyGui,GUI 操作就是一个简单的调用 EasyGui 函数的几个参数的问题了。例如,使用 EasyGui 来实现著名的“你好,世界!”程序是这样的:
import easygui as g
& && &&&g.msgbox(&Hello, world!&)
2.png (1.53 KB, 下载次数: 2)
下载附件 &保存到相册
21:21 上传
6. EasyGui 函数的默认参数对于所有函数而言,前两个参数是消息和标题。按照这个规律,在某种情况下,这可能不是最有利于用户的安排(例如,对话框在获取目录和文件名的时候忽略消息参数),但我觉得保持这种一致性贯穿于所有的窗口部件是一种更为重要的考虑!& &绝大部分的 EasyGui 函数都有默认参数,几乎所有的组件都会显示一个消息和标题。标题默认是空字符串,信息通常有一个简单的默认值。&&这使得你可以尽量少的去设置参数,比如 msgbox() 函数标题部分的参数就是可选的,所以你调用 msgbox() 的时候可以只指定一个消息参数,例如:
&&& msgbox('我爱小甲鱼^_^')
当然你也可以指定标题参数和消息参数,例如:
&&& msgbox('我爱小甲鱼^_^', '鱼油心声')
在各类按钮组件里,默认的消息是&Shall I continue?&,所以你可以不带任何参数地去调用它们。这里我们演示不带任何参数地去调用 ccbox(),当选择&cancel&或关闭窗口的时候返回一个布尔类型的值:
if ccbox():
& && &&&pass& && && &# user chose to continue
& && &&&return& && &# user chose to cancel
7. 使用关键字参数调用 EasyGui 的函数调用 EasyGui 函数还可以使用关键字参数哦。(如忘了的童鞋翻出《零基础入门学习Python》第18讲自行脑补)现在假设你需要使用一个按钮组件,但你不想指定标题参数(第二个参数),你仍可以使用关键字参数的方法指定 choices 参数(第三个参数),像这样:
&&& choices = ['愿意', '不愿意', '有钱的时候愿意']
&&& reply = choicebox('你愿意购买资源打包支持小甲鱼吗?', choices = choices)
4.png (5.57 KB, 下载次数: 2)
下载附件 &保存到相册
21:53 上传
8. 使用按钮组件根据需求,EasyGui 在 buttonbox() 上建立了一系列的函数供调用。8.1 msgbox()msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None)msgbox() 显示一个消息和提供一个&OK&按钮,你可以指定任意的消息和标题,你甚至可以重写&OK&按钮的内容。以下是 msgbox() 的实例函数:
def msgbox(msg=&(Your message goes here)&, title=&&, ok_button=&OK&):
& && &&&....
重写&OK&按钮最简单的方法是使用关键字参数:
&&& msgbox(&我一定要学会编程!&, ok_button=&加油!&)
5.png (2.14 KB, 下载次数: 2)
下载附件 &保存到相册
21:56 上传
8.2 ccbox()ccbox(msg='Shall I continue?', title=' ', choices=('Continue', 'Cancel'), image=None)ccbox() 提供一个选择:Continue 或者 Cancel,并相应的返回 1(选中Continue)或者 0(选中Cancel)。注意 ccbox() 是返回整型的 1 或 0,不是布尔类型的 True 或 False。但你仍然可以这么写:
if ccbox('要再来一次吗?', choices=('要啊要啊^_^', '算了吧T_T')):
& && &&&msgbox('不给玩了,再玩就玩坏了......')
& && &&&sys.exit(0) # 记得先 import sys 哈
8.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() 返回按钮的文本内容。如果用户取消取消或者关闭窗口,那么会返回默认选项(第一个选项)。请看例子:
6.png (2.92 KB, 下载次数: 2)
下载附件 &保存到相册
22:39 上传
8.5 indexbox()indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)基本跟上边一样,区别就是当用户选择第一个按钮的时候返回序号 0, 选择第二个按钮的时候返回序号 1。8.6 boolbox()boolbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)如果第一个按钮被选中则返回 1,否则返回 0。9. 如何在 buttonbox 里边显示图片当你调用一个 buttonbox 函数(例如 msgbox(), ynbox(), indexbox() 等等)的时候,你还可以为关键字参数 image 赋值,这是设置一个 .gif 格式的图像(注意仅支持 GIF 格式哦):
buttonbox('大家说我长得帅吗?', image='turtle.gif', choices=('帅', '不帅', '!@#$%'))
10. 为用户提供一系列选项10.1 choicebox()choicebox(msg='Pick something.', title=' ', choices=())按钮组件方便提供用户一个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,更好的策略是为它们提供一个可选择的列表。& && &choicebox() 为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。另外还可以使用键盘来选择其中一个选项(比较纠结,但一点儿都不重要):
例如当按下键盘上的&g&键,将会选中的第一个以&g&开头的选项。再次按下&g&键,则会选中下一个以&g&开头的选项。在选中最后一个以&g&开头的选项的时候,再次按下&g&键将重新回到在列表的开头的第一个以&g&开头的选项。
如果选项中没有以&g&开头的,则会选中字符排序在&g&之前(&f&)的那个字符开头的选项
如果选项中没有字符的排序在&g&之前的,那么在列表中第一个元素将会被选中。
8.png (11.12 KB, 下载次数: 2)
下载附件 &保存到相册
00:14 上传
10.2 multchoicebox()multchoicebox(msg='Pick as many items as you like.', title=' ', choices=(), **kwargs)multchoicebox() 函数也是提供一个可选择的列表,与 choicebox() 不同的是,multchoicebox() 支持用户选择 0 个,1 个或者同时选择多个选项。multchoicebox() 函数也是使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。
9.png (16.85 KB, 下载次数: 2)
下载附件 &保存到相册
15:38 上传
11. 让用户输入消息11.1 enterbox()enterbox(msg='Enter something.', title=' ', default='', strip=True, image=None, root=None)enterbox() 为用户提供一个最简单的输入框,返回值为用户输入的字符串。默认返回的值会自动去除首尾的空格,如果需要保留首尾空格的话请设置参数 strip=False。
10.png (4.65 KB, 下载次数: 2)
下载附件 &保存到相册
16:18 上传
11.2 integerbox()integerbox(msg='', title=' ', default='', lowerbound=0, upperbound=99, image=None, root=None, **invalidKeywordArguments)integerbox() 为用户提供一个简单的输入框,用户只能输入范围内(lowerbound参数设置最小值,upperbound参数设置最大值)的整型数值,否则会要求用户重新输入。11.3 multenterbox()multenterbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())multenterbox() 为用户提供多个简单的输入框,要注意以下几点:
如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户为输入的选项。
如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。
如果用户取消操作,则返回域中的列表的值或者None值。
11.png (9.34 KB, 下载次数: 2)
下载附件 &保存到相册
17:32 上传
12. 让用户输入密码有时候我们需要让用户输入密码,就是用户输入的东西看上去都是&*******&。12.1 passwordbox()passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None)passwordbox() 跟 enterbox() 样式一样,不同的是用户输入的内容用&*&显示出来,返回用户输入的字符串:
12.2 multpasswordbox()multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())multpasswordbox() 跟 multenterbox() 使用相同的接口,但当它显示的时候,最后一个输入框显示为密码的形式(&*&):
13.png (4.67 KB, 下载次数: 2)
下载附件 &保存到相册
18:10 上传
13. 显示文本EasyGui 还提供函数用于显示文本。13.1 textbox()textbox(msg='', title=' ', text='', codebox=0)testbox() 函数默认会以比例字体(参数 codebox=1 设置为等宽字体)来显示文本内容(会自动换行哦),这个函数适合用于显示一般的书面文字。注:text 参数(第三个参数)可以是字符串类型,列表类型,或者元祖类型。
14.png (36.23 KB, 下载次数: 2)
下载附件 &保存到相册
18:59 上传
13.2 codebox()codebox(msg='', title=' ', text='')codebox() 以等宽字体显示文本内容,相当于 textbox(codebox=1)注:等宽字体很丑的,不信你试试看@_@14. 目录与文件GUI 编程中一个常见的场景是要求用户输入目录及文件名,EasyGui 提供了一些基本函数让用户来浏览文件系统,选择一个目录或文件。14.1 diropenbox()diropenbox(msg=None, title=None, default=None)diropenbox() 函数用于提供一个对话框,返回用户选择的目录名(带完整路径哦),如果用户选择&Cancel&则返回 None。default 参数用于设置默认的打开目录(请确保设置的目录已存在)。
15.png (15.79 KB, 下载次数: 2)
下载附件 &保存到相册
20:43 上传
14.2 fileopenbox()fileopenbox(msg=None, title=None, default='*', filetypes=None)fileopenbox() 函数用于提供一个对话框,返回用户选择的文件名(带完整路径哦),如果用户选择&Cancel&则返回 None。关于 default 参数的设置方法:
default 参数指定一个默认路径,通常包含一个或多个通配符。
如果设置了 default 参数,fileopenbox() 显示默认的文件路径和格式。
default 默认的参数是'*',即匹配所有格式的文件。
default=&c:/fishc/*.py& 即显示 C:\fishc 文件夹下所有的 Python 文件。
default=&c:/fishc/test*.py& 即显示 C:\fishc 文件夹下所有的名字以 test 开头的 Python 文件。
关于 filetypes 参数的设置方法:
可以是包含文件掩码的字符串列表,例如:filetypes = [&*.txt&]
可以是字符串列表,列表的最后一项字符串是文件类型的描述,例如:filetypes = [&*.css&, [&*.htm&, &*.html&, &HTML files&]]
14.3 filesavebox()filesavebox(msg=None, title=None, default='', filetypes=None)filesavebox() 函数提供一个对话框,让用于选择文件需要保存的路径(带完整路径哦),如果用户选择&Cancel&则返回 None。default 参数应该包含一个文件名(例如当前需要保存的文件名),当然你也可以设置为空的,或者包含一个文件格式掩码的通配符。filetypes 参数的设置方法请参考上边。
17.png (45.43 KB, 下载次数: 2)
下载附件 &保存到相册
21:32 上传
15. 记住用户的设置15.1 EgStoreGUI 编程中一个常见的场景就是要求用户设置一下参数,然后保存下来,以便下次用户使用你的程序的时候可以记住他的设置。为了实现对用户的设置进行存储和恢复这一过程,EasyGui 提供了一个叫做 EgStore 的类。为了记住某些设置,你的应用程序必须定义一个类(暂时称之为&设置&类,尽管你随意地使用你想要的名称设置它)继承自 EgStore 类。然后你的应用程序必须创建一个该类的对象(暂时称之为&设置&对象)。设置类的构造函数(__init__ 方法)必须初始化所有的你想要它所记住的那些值。一旦你这样做了,你就可以在&设置&对象中通过设定值去实例化变量,从而很简单地记住设置。之后使用 settings.store() 方法在硬盘上持久化设置对象。下面是创建一个&设置&类的例子:
#-----------------------------------------------------------------------
# create &settings&, a persistent Settings object
# Note that the &filename& argument is required.
# The directory for the persistent file must already exist.
#-----------------------------------------------------------------------
settingsFilename = os.path.join(&C:&, &FishCApp&, &settings.txt&)&&# Windows example
settings = Settings(settingsFilename)
下面是使用&设置&对象的例子:
# we initialize the &user& and &server& variables
# In a real application, we'd probably have the user enter them via enterbox
user& & = &奥巴马&
server&&= &白宫&
# we save the variables as attributes of the &settings& object
settings.userId = user
settings.targetServer = server
settings.store()& & # persist the settings
# run code that gets a new value for userId
# then persist the settings with the new value
user& & = &小甲鱼&
settings.userId = user
settings.store()
& && &16. 捕获异常exceptionbox()使用 EasyGui 编写 GUI 程序,有时候难免会产生异常。当然这取决于你如何运行你的应用程序,当你的应用程序崩溃的时候,堆栈追踪可能会被抛出,或者被写入到 stdout 标准输出函数中。EasyGui 通过 exceptionbox() 函数提供了更好的方式去处理异常,异常出现的时候,exceptionbox() 会显示堆栈追踪在一个 codebox() 中并且允许你做进一步的处理。exceptionbox() 很容易使用,下面是一个例子:
& && &&&print('I !')
& && &&&int('FISHC') # 这里会产生异常
& && &&&exceptionbox()
18.png (11.87 KB, 下载次数: 3)
下载附件 &保存到相册
22:07 上传1.首先我们配置环境
先在网上下载一个包文件
2.然后在命令行输入安装命令
3.安装完成后看一下具体安装到了哪里
4.下面进入正题
运行程序:
如果你觉得对话框太大,可以在easygui的配置文件里修改相关的属性,包括字体等等:
修改大小后:
阅读(...) 评论()&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!只需一步,快速开始
后使用快捷导航没有帐号?
查看: 48991|回复: 408
EasyGui 学习文档【超详细中文版】
签到天数: 1948 天[LV.Master]伴坛终老
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
翻译改编自官方文档:
翻译改编者:小甲鱼,本文欢迎转载,转载请保证原文的完整性!
演示使用 Python 3.3.3 版本
0. 安装 EasyGui
(141.61 KB, 下载次数: 12591)
18:33 上传
点击文件名下载附件
使用标准方法安装:
使用命令窗口切换到easygui-docs-0.96的目录下【Windows下】执行C:\Python33\python.exe setup.py install【Linux或Mac下】sudo /Library/Framworks/Python.framework/Versions/3.3/bin/python3.3 setup.py install
1. 建议不要在 IDLE 上运行 EasyGui
EasyGui 是运行在 Tkinter 上并拥有自身的事件循环,而 IDLE 也是 Tkinter 写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可能会发生冲突,且带来不可预测的结果。因此如果你发现你的 EasyGui 程序有这样的问题,请尝试在 IDLE 外去运行你的程序。
2. 一个简单的例子
在 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 = &请选择&
& && &&&
& && &&&if g.ccbox(msg, title):& &&&# show a Continue/Cancel dialog
& && && && && & pass&&# user chose Continue
& && &&&else:
& && && && && & sys.exit(0)& &&&# user chose Cancel
复制代码
3. EasyGui 的各种功能演示
要运行 EasyGui 的演示程序,在命令行调用 EasyGui 是这样的:C:\Python33\python.exe easygui.py复制代码
或者你可以从 IDE(例如 IDLE, PythonWin, Wing, 等等)上来调用:&&& import easygui as g
&&& g.egdemo()复制代码
成功调用后你将可以尝试 EasyGui 拥有的各种功能,并将你选择的结果打印至控制台。
1.png (15.58 KB, 下载次数: 29)
21:19 上传
4. 导入 EasyGui
为了使用 EasyGui 这个模块,你应该先导入它。最简单的导入语句是:import easygui复制代码
如果你使用上面这种形式导入的话,那么你使用 EasyGui 的函数的时候,必须在函数的前面加上前缀 easygui,像这样:easygui.msgbox(...)复制代码
另一种选择是导入整个 EasyGui 包:from easygui import *复制代码
这使得我们更容易调用 EasyGui 的函数,你可以直接这样编写代码:msgbox(...)复制代码
第三种方案是使用类似下边的 import 语句:import easygui as g复制代码
这样可以让你保持 EasyGui 的命名空间,同时减少你的打字数量。导入之后你就可以这么调用 EasyGui 的函数:g.msgbox(...)复制代码
5. 使用 EasyGui
一旦你的模块导入 EasyGui,GUI 操作就是一个简单的调用 EasyGui 函数的几个参数的问题了。
例如,使用 EasyGui 来实现著名的“你好,世界!”程序是这样的:import easygui as g
& && &&&g.msgbox(&Hello, world!&)复制代码
2.png (1.53 KB, 下载次数: 19)
21:21 上传
6. EasyGui 函数的默认参数
对于所有函数而言,前两个参数是消息和标题。按照这个规律,在某种情况下,这可能不是最有利于用户的安排(例如,对话框在获取目录和文件名的时候忽略消息参数),但我觉得保持这种一致性贯穿于所有的窗口部件是一种更为重要的考虑!
绝大部分的 EasyGui 函数都有默认参数,几乎所有的组件都会显示一个消息和标题。标题默认是空字符串,信息通常有一个简单的默认值。
这使得你可以尽量少的去设置参数,比如 msgbox() 函数标题部分的参数就是可选的,所以你调用 msgbox() 的时候可以只指定一个消息参数,例如:&&& msgbox('我爱小甲鱼^_^')复制代码
当然你也可以指定标题参数和消息参数,例如:&&& msgbox('我爱小甲鱼^_^', '鱼油心声')复制代码
3.png (2.27 KB, 下载次数: 12)
21:51 上传
在各类按钮组件里,默认的消息是&Shall I continue?&,所以你可以不带任何参数地去调用它们。这里我们演示不带任何参数地去调用 ccbox(),当选择&cancel&或关闭窗口的时候返回一个布尔类型的值:if ccbox():
& && &&&pass& && && &# user chose to continue
else:
& && &&&return& && &# user chose to cancel复制代码
7. 使用关键字参数调用 EasyGui 的函数
调用 EasyGui 函数还可以使用关键字参数哦。(如忘了的童鞋翻出《零基础入门学习Python》第18讲自行脑补)
现在假设你需要使用一个按钮组件,但你不想指定标题参数(第二个参数),你仍可以使用关键字参数的方法指定 choices 参数(第三个参数),像这样:&&& choices = ['愿意', '不愿意', '有钱的时候愿意']
&&& reply = choicebox('你愿意购买资源打包支持小甲鱼吗?', choices = choices)复制代码
4.png (5.57 KB, 下载次数: 13)
21:53 上传
8. 使用按钮组件
根据需求,EasyGui 在 buttonbox() 上建立了一系列的函数供调用。
8.1 msgbox()
msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None)
msgbox() 显示一个消息和提供一个&OK&按钮,你可以指定任意的消息和标题,你甚至可以重写&OK&按钮的内容。
以下是 msgbox() 的实例函数:def msgbox(msg=&(Your message goes here)&, title=&&, ok_button=&OK&):
& && &&&....复制代码
重写&OK&按钮最简单的方法是使用关键字参数:&&& msgbox(&我一定要学会编程!&, ok_button=&加油!&)复制代码
5.png (2.14 KB, 下载次数: 11)
21:56 上传
8.2 ccbox()
ccbox(msg='Shall I continue?', 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 哈复制代码
8.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() 返回按钮的文本内容。如果用户取消取消或者关闭窗口,那么会返回默认选项(第一个选项)。请看例子:
6.png (2.92 KB, 下载次数: 21)
22:39 上传
8.5 indexbox()
indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)
基本跟上边一样,区别就是当用户选择第一个按钮的时候返回序号 0, 选择第二个按钮的时候返回序号 1。
8.6 boolbox()
boolbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)
如果第一个按钮被选中则返回 1,否则返回 0。
9. 如何在 buttonbox 里边显示图片
当你调用一个 buttonbox 函数(例如 msgbox(), ynbox(), indexbox() 等等)的时候,你还可以为关键字参数 image 赋值,这是设置一个 .gif 格式的图像(注意仅支持 GIF 格式哦):buttonbox('大家说我长得帅吗?', image='turtle.gif', choices=('帅', '不帅', '!@#$%'))复制代码
7.png (12.21 KB, 下载次数: 42)
23:02 上传
10. 为用户提供一系列选项
10.1 choicebox()
choicebox(msg='Pick something.', title=' ', choices=())
按钮组件方便提供用户一个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,更好的策略是为它们提供一个可选择的列表。& &
choicebox() 为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。
另外还可以使用键盘来选择其中一个选项(比较纠结,但一点儿都不重要):
例如当按下键盘上的&g&键,将会选中的第一个以&g&开头的选项。再次按下&g&键,则会选中下一个以&g&开头的选项。在选中最后一个以&g&开头的选项的时候,再次按下&g&键将重新回到在列表的开头的第一个以&g&开头的选项。如果选项中没有以&g&开头的,则会选中字符排序在&g&之前(&f&)的那个字符开头的选项如果选项中没有字符的排序在&g&之前的,那么在列表中第一个元素将会被选中。
综合我们之前学习的文件功能,举个高达上的例子(源代码在第35讲的课后作业中^_^):
8.png (11.12 KB, 下载次数: 12)
00:14 上传
10.2 multchoicebox()
multchoicebox(msg='Pick as many items as you like.', title=' ', choices=(), **kwargs)
multchoicebox() 函数也是提供一个可选择的列表,与 choicebox() 不同的是,multchoicebox() 支持用户选择 0 个,1 个或者同时选择多个选项。
multchoicebox() 函数也是使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。
9.png (16.85 KB, 下载次数: 11)
15:38 上传
11. 让用户输入消息
11.1 enterbox()
enterbox(msg='Enter something.', title=' ', default='', strip=True, image=None, root=None)
enterbox() 为用户提供一个最简单的输入框,返回值为用户输入的字符串。默认返回的值会自动去除首尾的空格,如果需要保留首尾空格的话请设置参数 strip=False。
10.png (4.65 KB, 下载次数: 11)
16:18 上传
11.2 integerbox()
integerbox(msg='', title=' ', default='', lowerbound=0, upperbound=99, image=None, root=None, **invalidKeywordArguments)
integerbox() 为用户提供一个简单的输入框,用户只能输入范围内(lowerbound参数设置最小值,upperbound参数设置最大值)的整型数值,否则会要求用户重新输入。
11.3 multenterbox()
multenterbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())
multenterbox() 为用户提供多个简单的输入框,要注意以下几点:
如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户为输入的选项。如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。如果用户取消操作,则返回域中的列表的值或者None值。
实现如下图(源代码在第35讲的课后作业中^_^):
11.png (9.34 KB, 下载次数: 16)
17:32 上传
12. 让用户输入密码
有时候我们需要让用户输入密码,就是用户输入的东西看上去都是&*******&。
12.1 passwordbox()
passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None)
passwordbox() 跟 enterbox() 样式一样,不同的是用户输入的内容用&*&显示出来,返回用户输入的字符串:
12.png (4.64 KB, 下载次数: 9)
18:02 上传
12.2 multpasswordbox()
multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())
multpasswordbox() 跟 multenterbox() 使用相同的接口,但当它显示的时候,最后一个输入框显示为密码的形式(&*&):
13.png (4.67 KB, 下载次数: 10)
18:10 上传
13. 显示文本
EasyGui 还提供函数用于显示文本。
13.1 textbox()
textbox(msg='', title=' ', text='', codebox=0)
testbox() 函数默认会以比例字体(参数 codebox=1 设置为等宽字体)来显示文本内容(会自动换行哦),这个函数适合用于显示一般的书面文字。
注:text 参数(第三个参数)可以是字符串类型,列表类型,或者元祖类型。
14.png (36.23 KB, 下载次数: 15)
18:59 上传
13.2 codebox()
codebox(msg='', title=' ', text='')
codebox() 以等宽字体显示文本内容,相当于 textbox(codebox=1)
注:等宽字体很丑的,不信你试试看@_@
14. 目录与文件
GUI 编程中一个常见的场景是要求用户输入目录及文件名,EasyGui 提供了一些基本函数让用户来浏览文件系统,选择一个目录或文件。
14.1 diropenbox()
diropenbox(msg=None, title=None, default=None)
diropenbox() 函数用于提供一个对话框,返回用户选择的目录名(带完整路径哦),如果用户选择&Cancel&则返回 None。
default 参数用于设置默认的打开目录(请确保设置的目录已存在)。
15.png (15.79 KB, 下载次数: 10)
20:43 上传
14.2 fileopenbox()
fileopenbox(msg=None, title=None, default='*', filetypes=None)
fileopenbox() 函数用于提供一个对话框,返回用户选择的文件名(带完整路径哦),如果用户选择&Cancel&则返回 None。
关于 default 参数的设置方法:
default 参数指定一个默认路径,通常包含一个或多个通配符。如果设置了 default 参数,fileopenbox() 显示默认的文件路径和格式。default 默认的参数是'*',即匹配所有格式的文件。
default=&c:/fishc/*.py& 即显示 C:\fishc 文件夹下所有的 Python 文件。default=&c:/fishc/test*.py& 即显示 C:\fishc 文件夹下所有的名字以 test 开头的 Python 文件。
关于 filetypes 参数的设置方法:
可以是包含文件掩码的字符串列表,例如:filetypes = [&*.txt&]可以是字符串列表,列表的最后一项字符串是文件类型的描述,例如:filetypes = [&*.css&, [&*.htm&, &*.html&, &HTML files&]]
16.png (44.5 KB, 下载次数: 10)
21:00 上传
14.3 filesavebox()
filesavebox(msg=None, title=None, default='', filetypes=None)
filesavebox() 函数提供一个对话框,让用于选择文件需要保存的路径(带完整路径哦),如果用户选择&Cancel&则返回 None。
default 参数应该包含一个文件名(例如当前需要保存的文件名),当然你也可以设置为空的,或者包含一个文件格式掩码的通配符。
filetypes 参数的设置方法请参考上边。
17.png (45.43 KB, 下载次数: 9)
21:32 上传
15. 记住用户的设置
15.1 EgStore
GUI 编程中一个常见的场景就是要求用户设置一下参数,然后保存下来,以便下次用户使用你的程序的时候可以记住他的设置。
为了实现对用户的设置进行存储和恢复这一过程,EasyGui 提供了一个叫做 EgStore 的类。为了记住某些设置,你的应用程序必须定义一个类(暂时称之为&设置&类,尽管你随意地使用你想要的名称设置它)继承自 EgStore 类。
然后你的应用程序必须创建一个该类的对象(暂时称之为&设置&对象)。
设置类的构造函数(__init__ 方法)必须初始化所有的你想要它所记住的那些值。
一旦你这样做了,你就可以在&设置&对象中通过设定值去实例化变量,从而很简单地记住设置。之后使用 settings.store() 方法在硬盘上持久化设置对象。
下面是创建一个&设置&类的例子:#-----------------------------------------------------------------------
# create &settings&, a persistent Settings object
# Note that the &filename& argument is required.
# The directory for the persistent file must already exist.
#-----------------------------------------------------------------------
settingsFilename = os.path.join(&C:&, &FishCApp&, &settings.txt&)&&# Windows example
settings = Settings(settingsFilename)复制代码
下面是使用&设置&对象的例子:# we initialize the &user& and &server& variables
# In a real application, we'd probably have the user enter them via enterbox
user& & = &奥巴马&
server&&= &白宫&
# we save the variables as attributes of the &settings& object
settings.userId = user
settings.targetServer = server
settings.store()& & # persist the settings
# run code that gets a new value for userId
# then persist the settings with the new value
user& & = &小甲鱼&
settings.userId = user
settings.store()复制代码& &
16. 捕获异常
exceptionbox()
使用 EasyGui 编写 GUI 程序,有时候难免会产生异常。当然这取决于你如何运行你的应用程序,当你的应用程序崩溃的时候,堆栈追踪可能会被抛出,或者被写入到 stdout 标准输出函数中。
EasyGui 通过 exceptionbox() 函数提供了更好的方式去处理异常,异常出现的时候,exceptionbox() 会显示堆栈追踪在一个 codebox() 中并且允许你做进一步的处理。
exceptionbox() 很容易使用,下面是一个例子:try:
& && &&&print('I !')
& && &&&int('FISHC') # 这里会产生异常
except:
& && &&&exceptionbox()复制代码
18.png (11.87 KB, 下载次数: 15)
22:07 上传
嘿,如果这篇文章让你学习到新知识,可以点下边“评分”作为奖励哦^_^
感谢楼主无私奉献!
感谢楼主无私奉献!
感谢楼主无私奉献!
感谢楼主无私奉献!
支持楼主!
热爱鱼C^_^
支持楼主!
本帖被以下淘专辑推荐:
& |主题: 5, 订阅: 5
& |主题: 5, 订阅: 3
& |主题: 3, 订阅: 0
& |主题: 2, 订阅: 0
& |主题: 13, 订阅: 0
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 354 天[LV.8]以坛为家I
很有意思,已经运行,python实现一个gui很方便。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 73 天[LV.6]常住居民II
很好,支持小甲鱼!
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 162 天[LV.7]常住居民III
本帖最后由 最好是明天 于
23:01 编辑
我是第二个。。。。。。。。。。。哈,马上学习,谢谢鱼哥
怎么变成第三了啊,明明是第二的啊
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 323 天[LV.8]以坛为家I
哈哈,前来支持。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 291 天[LV.8]以坛为家I
小甲鱼真的好厉害
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 354 天[LV.8]以坛为家I
求OL系列种子
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 344 天[LV.8]以坛为家I
最近正找这个中文的,太感谢版主了:big:big
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 160 天[LV.7]常住居民III
辛苦了,建议成立个翻译小组,可以不定期翻译写文档@
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 114 天[LV.6]常住居民II
小甲鱼老师,怎么我一点击cancel就会出现& &SystemExit: 0& &&&这个错误啊
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 1182 天[LV.10]以坛为家III
昨天下了python3.4.0,版本更新好快啊
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 519 天[LV.9]以坛为家II
这个GUI不错,可以学习学习啊{:1_1:}
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 1 天[LV.1]初来乍到
怎么安装&&和运行啊?
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 315 天[LV.8]以坛为家I
酷,好多天没有搞Python了,最近Python会强势回归的!!呵呵!
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 991 天[LV.10]以坛为家III
前来支持一个!{:1_1:}
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 53 天[LV.5]常住居民I
支持一个!!!!!!
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 333 天[LV.8]以坛为家I
感谢小甲鱼的辛勤劳动~
这个必须学习的内容。:lol:
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 56 天[LV.5]常住居民I
感谢鱼老师,终于有做界面的教程了,再不出这些教程前面的全忘光了......
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 237 天[LV.7]常住居民III
我好像看到了很多羞羞的东西{:7_156:}
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 8 天[LV.3]偶尔看看II
小甲鱼真棒~加油 我也要更加努力
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
•••(
Powered by}

我要回帖

更多关于 python easygui 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信