关于 Python 实现简单的 GUI 界面显示

感觉关于 GUI 界面显示的一些操作是比较有趣的,但是 Python 中的 easygui 的这个库实现的效果是比较简单的,操作起来也是很简单的,在这里做一个小小的演示玩一玩…

1. 下载安装 easygui

在 python 的环境下安装 easygui 是很简单的,安装方式有多种,这里介绍两种:

  • 直接使用 pip install easygui 的命令进行安装
  • 到此 链接 去下载源包,然后再在本地进行安装

下载安装完成后,可以简单的进行测试,我目前使用 python 环境是 python2.7.15;在 VS code(Visual Studio Code) 上进行测试:

简单测试
安装成功!可以正常显示!

2. 导入模块 easygui

为了要使用 easygui 这个模块,首先需要导入,导入的方法有几种:

  • 使用 import easygui 导入,在调用时需要加上 easygui 的前缀,就像这样: easygui.msgbox(...)
  • 使用 import easygui as g 导入,这种保存命名空间,减少了代码数量,在调用时为 g.msgbox(...)
  • 使用 from easygui import * 这种更容易调用,直接使用函数 msgbox(...)

3. 使用 easygui

根据导入方式的不同,使用 easygui 的方式也有一点不同,本文使用第二种导入方式(使用 import easygui as g ),后面的实例都基于第二种方式来演示…

一旦导入了 easygui 模块,使用起来就很简单了,成功导入后,你可以调用 g.egdemo() 来查看并尝试 easygui 拥有的各种功能,并将结果打印至控制台。

easygui 功能及函数

3.1 easygui 相关函数介绍

对于绝大部分的 easygui 函数都有默认参数,所有的对话框的前两个参数都是消息的主体和对话框标题,几乎所有的组件都会显示消息主体和对话框标题,标题默认为空字符串,这使得我们在使用时可以尽可能少的去设置参数。

3.1.1 使用按钮组件函数
(1) msgbox()

函数 msgbox(msg=' ', title=' ', ok_button=' ', image=None, root=None)

默认参数:msgbox (msg=’(Your message goes here)’, title=’ ', ok_button=‘OK’, image=None, root=None)

该函数一般调用前三个关键字即可,加载图片的话给 image 赋值需要下载其他库,函数示例:

msgbox()

(2) ccbox()

函数 ccbox(msg=' ', title=' ', choices=(' ', ' '), image=None)

默认参数:ccbox (msg=‘Shall I continue?’, title=’ ', choices=(‘C[o]ntinue’, ‘C[a]ncel’), image=None, default_choice=‘C[o]ntinue’, cancel_choice=‘C[a]ncel’)

注意:“C[o]ntinue” 中的 [o] 表示快捷键,也就是说当用户在键盘上敲一下 o 字符,就相当于点击了 “C[o]ntinue” 按键;‘C[a]ncel’ 同理。

该函数多了一个选项为 choices ,提供了一个选择(只能容纳两个选项 !) ,并相应的返回布尔值 Ture 或者 False

ccbox()
在各类按钮组件里,默认的消息是 “Shall I continue?”,所以可以不带任何参数地去调用它们

这里我们演示不带任何参数地去调用 ccbox(),当选择 “cancel” 或关闭窗口的时候返回一个布尔类型的值:

if g.ccbox(): 
        pass        # 用户选择继续
else: 
        return      # 用户选择取消
(3) ynbox()

函数 ynbox(msg=' ', title=' ', choices=(' ', ' '), image=None)

默认参数:ynbox (msg=‘Shall I continue?’, title=’ ‘, choices=(’[< F1 >]Yes’, ‘[< F2 >]No’), image=None, default_choice=’[< F1 >]Yes’, cancel_choice=’[< F2 >]No’)

跟 ccbox() 一样,只不过这里默认的 choices 参数值不同而已,[< F1 >] 表示将键盘上的 F1 功能按键作为 “Yes” 的快捷键使用,这里就不再做演示了

(4) buttonbox()

函数 buttonbox(msg=' ', title=' ', choices=('Button1', 'Button2', 'Button3'), image=None, root=None)

默认参数:buttonbox (msg=’’, title=’ ', choices=(‘Button[1]’, ‘Button[2]’, ‘Button[3]’), image=None, images=None, default_choice=None, cancel_choice=None, callback=None, run=True)

用户可以使用 buttonbox() 定义自己的一组按钮,buttonbox() 会显示一组由你自定义的按钮;当用户点击任意一个按钮的时候,buttonbox() 返回的值和 ccbox()不一样,是按钮的文本内容;如果用户点击取消或者关闭窗口,那么会返回默认选项(第一个选项)

示例:

buttonbox()

(5) indexbox()

函数 indexbox(msg=' ', title=' ', choices=(' ', ' '), image=None)

默认参数:indexbox (msg=‘Shall I continue?’, title=’ ', choices=(‘Yes’, ‘No’), image=None, default_choice=‘Yes’, cancel_choice=‘No’)

该函数基本跟 buttonbox() 一样,区别就是当用户选择第一个按钮的时候返回 0, 选择第二个按钮的时候返回 1

(6) boolbox()

函数 boolbox(msg=' ', title=' ', choices=(' ', ' '), image=None )

默认参数:boolbox (msg=‘Shall I continue?’, title=’ ‘, choices=(’[Y]es’, ‘[N]o’), image=None, default_choice=‘Yes’, cancel_choice=‘No’)

该函数基本跟 indexbox() 一样,区别就是当用户选择第一个按钮的时候返回 True, 否则返回 False

3.1.2 提供选项组件函数
(1) choicebox()

函数 choicebox(msg=' ', title=' ', choices=[ , , ...], preselect=0, callback=None, run=True)

默认参数:choicebox (msg=‘Pick an item’, title=’’, choices=[], preselect=0, callback=None, run=True)

choicebox() 为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项会按照字母进行排序选项输入不再是单个元素,此处是以整个序列的方式输入,如列表、元组等;

选择选项后确认,会返回选项内容的文本内容,否则是none

choicebox()

(2) multchoicebox()

函数 multchoicebox(msg=' ', title=' ', choices=[ , , ...], preselect=0, callback=None, run=True)

默认参数:multchoicebox (msg=‘Pick an item’, title=’’, choices=[], preselect=0, callback=None, run=True)

multchoicebox() 功能与 choicebox() 一样,只是他可以提供多选,多选的返回值是多选的文本列表:

multchoicebox()

3.1.3 输入消息组件函数
(1) enterbox()

函数 enterbox(msg=' ', title=' ', default=' ', strip=True, image=None, root=None)

默认参数:enterbox (msg=‘Enter something.’, title=’ ‘, default=’’, strip=True, image=None, root=None)

enterbox() 为用户提供一个最简单的输入框,返回值为用户输入的字符串,其中,default 关键字定义的是文本框默认值,strip 的值为 True 时会自动忽略输入的首尾空格,False 则相反;

enterbox()

(2) interbox()

函数 integerbox(msg='', title=' ', default='', lowerbound=0, upperbound=99, image=None, root=None)

默认参数:integerbox (msg=’’, title=’ ', default=None, lowerbound=0, upperbound=99, image=None, root=None)

integerbox() 也为用户提供了一个简单的输入框,用户只能输入范围内(lowerbound 参数设置最小值,upperbound 参数设置最大值)的整型数值,否则会要求用户重新输入,返回值为输入值。

interbox()

(3) multenterbox()

函数 multenterbox(msg=' ', title=' ', fields=(), values=())

默认参数:multenterbox (msg=‘Fill in values for the fields.’, title=’ ', fields=[], values=[], callback=None, run=True)

其中 values 是输入的默认值,feilds 是需要填写的条目名称,均用列表填写;返回值是所有填写的值构成的列表

multenterbox() 为用户提供多个简单的输入框,要注意以下几点:

  • 如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户未输入的选项
  • 如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量
  • 如果用户取消操作,则返回域中的列表的值或者 None

示例如下:

multenterbox()

3.1.4 输入密码组件函数

GUI 编程中有时候的界面需要输入密码等敏感信息,让界面看上去应该是这样的:***************

easygui 中提供了一些基本函数让用户来实现这点。

(1) passwordbox()

函数 passwordbox(msg=' ', title=' ', default=' ', image=None, root=None)

默认参数:passwordbox (msg=‘Enter your password.’, title=’ ‘, default=’’, image=None, root=None)

passwordbox() 函数可以做到这一点,它跟 enterbox() 样式一样,不同的是用户输入的内容用星号(*)显示出来,该函数返回用户输入的字符串,示例:

passwordbox()-1
下面的示例显示出实际输入的字符串:

passwordbox()-2

(2) multpasswordbox()

函数 multpasswordbox(msg=' ', title=' ', fields=(), values=(), callback=None, run=True)

默认参数:multpasswordbox (msg=‘Fill in values for the fields.’, title=’ ', fields=(), values=(), callback=None, run=True)

multpasswordbox() 跟 multenterbox() 使用相同的接口,但是更加实用的类型,其只有最后一个框是匿名的,即密码输入框;其他都一样,返回值为列表形式

multpasswordbox()

3.1.5 显示文本组件函数
(1) textbox()

函数 textbox(msg='', title=' ', text='', codebox=False, callback=None, run=True)

textbox() 函数默认会以比例字体(参数 codebox=True 设置为等宽字体)来显示文本内容(自动换行),这个函数适合用于显示一般的书面文字。

:text 参数设置可编辑文本区域的内容,可以是字符串、列表或者元祖类型。

textbox()

(2) codebox()

函数 codebox(msg='', title=' ', text='')

codebox() 以等宽字体显示文本内容(不自动换行),相当于 textbox(codebox=True)

3.1.6 目录与文件函数

GUI 编程中一个常见的场景是要求用户输入目录及文件名,easygui 提供了一些基本函数让用户来浏览文件系统,选择一个目录或文件。

(1) diropenbox()

函数 diropenbox(msg=None, title=None, default=None)

diropenbox() 函数用于提供一个对话框,返回用户选择的目录名(带完整路径),如果用户选择 “Cancel” 则返回 None。

default 参数用于设置默认的打开目录(请确保设置的目录已存在)。

diropenbox()

(2) fileopenbox()

函数 fileopenbox(msg=None, title=None, default='*', filetypes=None, multiple=False)

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”]]

最后是 multiple 参数,如果为 True 则表示可以同时选择多个文件。

fileopenbox()

(3) filesavebox()

函数 filesavebox(msg=None, title=None, default='', filetypes=None)

filesavebox() 函数提供一个对话框,让用于选择文件需要保存的路径(带完整路径),如果用户选择 “Cancel” 则返回 None。

default 参数应该包含一个文件名(例如当前需要保存的文件名),当然也可以设置为空的,或者包含一个文件格式掩码的通配符。

filetypes 参数的设置方法请参考 fileopenbox() 函数。

filesavebox()

3.1.7 异常捕获函数
exceptionbox()

使用 easygui 编写 GUI 程序,有时候难免会产生异常。当你的应用程序崩溃的时候,堆栈追踪可能会被抛出,或者被写入到 stdout 标准输出函数中。

easygui 通过 exceptionbox() 函数提供了更好的方式去处理异常。

当异常出现的时候,exceptionbox() 会将堆栈追踪显示在一个 codebox() 中,并且允许你做进一步的处理。

exceptionbox() 很容易使用,下面举个例子:

try:
    print('Hello Word !!!')
    int('Hello Word') # 这里会产生异常
except:
    g.exceptionbox()

exceptionbox()

好了,以上仅是简单使用 easygui 的显示界面,其功能很简单,简单说明一下部分函数,也在此记录一下…

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值