|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 景命 于 2017-8-9 22:37 编辑
Gui编程:Graphical User Interface(图形用户界面)
知识点:
一 .建议不要用在IDLE上运行EasyGui
EasyGui是运行在Tkinter上,并拥有自身的事件循环,而IDLE也是Tkinter写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可能会发生冲突,并且带来不可预测的结果。因此如果你发现你的EasyGui程序有这样的问题,请尝试在IDLE外去运行你的程序。
二 .导入easygui的三种方式
1.这种方式调用EasyGui的时候,前缀显得太长的。import easygui
easygui.magbox("吃饭啦!")
2.这种直接导入整个包方式,可能会与自己定义的方法名重复。from easygui import *
msgbox("饭都凉了!!")
3.推荐使用这种方式。import easygui as g
g.msgbox("快来吃放!!!")
三. EasyGui函数的默认参数
对于所有函数而言,前两个参数是消息和标题。绝大部分的EasyGui函数都有默认参数,几乎所有的组件都会显示一个消息和标题。标题默认是空的字符串,信息通常有一个见得的默认值。
四. 使用按钮组件
1. msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None) #一个对话框,返回字符串OK。
msg:对话框中显示的消息。
title:对话框的标题。
ok_button:按钮上的提示。
image:对话框显示的图片
2. ccbox(msg='Shall I continue?', title=' ', choices=('Continue', 'Cancel'), image=None)
#提供一个选择:Continue或者Cancel,并相应返回1(选中Continue)或者0(Cancel)
msg:对话框中显示的消息。
title:对话框的标题。
choices:Continue选择按钮和Cancel选择按钮上的提示。
image:对话框显示的图片
例:import easygui as g
import sys
if g.ccbox("缓好了,要再来一次么","抉择",("要啊!^_^","算了吧!T_T")):
g.msgbox("不给玩了,再玩就玩坏了","通知")
else:
sys.exit(0) #退出解释器,参数默认为0。
3. ynbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None) #和上边的一样。
4. buttonbox(msg='', title=' ', choices=('Button1', 'Button2', 'Button3'), image=None, root=None)
#可以使用buttonbox()定义自己的一组按钮,buttonbox()会显示一组你定义好的一组按钮。当用户点击任意一个按钮的时候,buttonbox()返回按钮的文本内容,如果用户取消或者关闭窗口,那么会返回默认选项(第一个选项)
choices:定义按钮的个数和按钮的名字。
例:print(g.buttonbox("今天中午吃啥啊?","人生三大难题",("来份盖饭?","水饺","泡面T_T")))
5. indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)
#和上边的buttonbox()基本一样,区别就是用户选择第一个按钮的时候返回序号0,选择第二个按钮返回序号1。返回按钮的序号。
6.boolbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)
#如果第一个按钮被选中则返回1,否则返回0。
例:print(g.boolbox("你漂亮么?","真心话",("漂亮","很漂亮!")))
五. 如何设置image参数
当你调用一个buttonbox()参数(例如msgbox()、ynbok()、indexbox()等等)的时候,你还可以为关键字参数image赋值,这是设置一个.gif格式的图像(注意仅支持GIF格式)。g.boolbox(msg='饿不饿', title='想吃吗?', choices=("想吃","不吃"), image="ssa.gif")
六. 为用户提供一些列的选项
按钮组件方便提供用户一个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,更好的策略是为他们提供一个可选择的列表。
1. choicebox(msg='Pick something.', title=' ', choices=())
#choicebox()为用户提供了一个可选择的列表,使用序列(元组和列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。
choices:用户选择的选项组成的序列。
例:book_list = ["钢铁是怎样炼成的","童年·在人间·我的大学","傲慢与偏见"]
g.choicebox("选项如下","翻牌子",book_list)
2.multchoicebox(msg='Pick as many items as you like.', title=' ', choices=(), **kwargs)
#multchoicebox()函数也是提供一个可选择的列表,与choicebox()不同的是,multchoicebox()支持用户选择零个,一个或者同时选择多个选项。
multchoicebox()函数也是使用序列(元组或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。
例:book_list = ["钢铁是怎样炼成的","童年·在人间·我的大学","傲慢与偏见"]
g.multchoicebox("什么样的思想","鸡汤",book_list)
七. 让用户输入消息
1.enterbox(msg='Enter something.', title=' ', default='', strip=True, image=None, root=None)
#enterbox()为用户提供一个最简单的输入框,返回值为用户输入的字符串。默认返回的值会自动去除首尾的空格,如果需要保留首尾空格的话请设置参数strip = False。
default:输入框的默认内容。
strip:是否要去除输入的内容的首尾的空格。
例:print(g.enterbox("请输入你的愿望","心声","睡觉"))
2.integerbox(msg='', title=' ', default='', lowerbound=0, upperbound=99, image=None, root=None, **invalidKeywordArguments)
#intgerbox()为用户提供一个简单的输入框,用户只能输入范围内(lowerbound参数设置最小值,upperbound参数设置最大值)的整形数值,否则会要求用户从新输入。返回值为用户输入的值。
例:s = g.integerbox(lowerbound = 10,upperbound = 60)
print(s)
3.multenterbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())
#multenterbox()为用户提供多个简单的输入框,要注意以下几点。
·如果用户输入的值比选项少的话,则返回列表中的值用空字符串来填充用户未输入的选项。
·如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。
·如果用户取消操作,则返回域中的列表的值或者None值。
values:fields()的默认值。list1 = ["*用户名","*真实姓名","固定电话","*手机号码","QQ","E-mail"]
s = g.multenterbox("【*真是姓名】为必须填。\n【*手机号码】为必须填。\n【*E-mail】为必须填。","账号中心",list1)
for i in s:
print(i)
八. 让用户输入密码
#有时候我们需要让用户输入密码,就是用户输入的东西看上去都是“************************”。
1.passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None) #passwordbox()和enterbox()形式一样,不同的是用户输入的内容是以“*”显示出来,返回用户输入的字符串。
g.passwordbox("请输入你的银行卡密码","我是黑客")
2.multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())
#multpassworebox()跟multenterbox()使用相同的接口,但当它显示的时候,最后一个输入框显示为密码的形式。list1 = ["*用户名","*真实姓名","固定电话","*手机号码","QQ","E-mail","密码"]
g.multpasswordbox("【*真是姓名】为必须填。\n【*手机号码】为必须填。\n【*E-mail】为必须填。","账号中心",list1)
九. 显示文本
EasyGui还提供函数用于显示文本。
1. textbox(msg='', title=' ', text='', codebox=0)
#textbox()函数默认会以比例字体(参数codebox = 1 设置为等宽字体)来显示文本内容,(会自动换行哦),这个函数适合用于显示一般的书面文字。返回参数text中的内容,但是末尾会追加一个"\n"
text参数可以使字符串类型,列表类型,元组类型。file_dialogue = open("record.txt")
record = file_dialogue.read()
g.textbox("小甲鱼和小客服的对话","record",record,1)
2. codebox(msg='', title=' ', text='')
#codebox()以等宽字体显示文本内容,相当于textbox(codebox = 1)。注:等宽字体很丑啊。with open("record.txt") as file_dialogue:
record = file_dialogue.read()
g.codebox("小甲鱼和小客服的对话","record",record)
十. 目录与文件
GUI编程中一个常见的场景是要求用户输入目录及文件名,EasyGui提供了一些基本函数让用户来浏览文件系统,选择一个目录或文件。
1.diropenbox(msg=None, title=None, default=None)
#diropenbox()函数用于提供一个对话框,返回用户选择的目录名(带有完整路径),如果用户选择了“取消”则返回None。
default:用户设置默认的打开目录(请确保设置的目录已经存在)。s = g.diropenbox("浏览文件夹","请选择一个好看的文件夹")
2.fileopenbox(msg=None, title=None, default='*', filetypes=None)
#fileopenbox()函数用于提供一个对话框,返回用户选择的文件名(带有完整路径哦),如果用户选择了“取消”则返回None。
default:指定一个默认路径,通常包含一个或多个通配符。
default默认参数是“ * ”,即匹配所有格式的文件。
例如:
1.default = "C:/fishc/*.py",即显示C:/fishc文件夹下所有的Python文件。
2.default = "C:/fishc/test*.py",极限是C:/fishc文件夹下所有名字以test开头的Python文件。
关于filetypes参数的设置方法:
·可以是包含文件掩码的字符串列表,例如:filetypes = ["*.txt"]
.可以是字符串列表,列表的最后一项字符串是文件类型的描述,例如:filetypes = ["*.css",["*htm","*html","*HTML files"]]
例:g.fileopenbox("打开","选择一个文件夹",r"E:\Python\*.py",".py")
3.filesavebox(msg=None, title=None, default='', filetypes=None)
#filesavebox()函数提供一个对话框,用于选择文件需要保存的路径(带完整的路径哦),如果用户选择了“取消”,则返回None。
default:参数应该包含一个文件名(例如需要保存的文件名);当然也可以为空,或者包含一个文件格式的掩码的通配符。
filetypes:设置方法与上边相同。
例:g.filesavebox("另存为","选择路径","asdf")
十一. 捕获异常
使用EasyGui编写GUI程序,有时候难免会产生异常。当然这取决于你如何运行你的程序,当你的程序崩溃的时候,堆栈追踪可能会被抛出,或者被写入到stdout标准输出函数中。
1.exceptionbox(msg=None, title=None)
#EasyGui通过exceptionbox()函数提供了更好的方式去处理异常,异常出现的时候,exception()会显示堆栈追踪在一个codebox()中并且允许你做进一步的处理。
例:try:
int("a")
except :
g.exceptionbox()
|
评分
-
查看全部评分
|