鱼C论坛

 找回密码
 立即注册
查看: 1996|回复: 0

[技术交流] 33 图形用户界面入门:EasyGui - 景命

[复制链接]
发表于 2017-8-9 22:36:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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()

评分

参与人数 1鱼币 +10 收起 理由
小甲鱼 + 10

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 19:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表