知识点:EasyGui python可视化编程

python

原址:http://bbs.fishc.com/forum.php?mod=viewthread&tid=46069&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

1:EasyGui 的各种功能演示

要运行 EasyGui 的演示程序,

方法1: 在命令行cmd调用 EasyGui

C:\Python33\python.exe easygui.py

方法2: 在IDLE上运行

import easygui as g

g.egdemo()

成功调用后你将可以尝试 EasyGui 拥有的各种功能,并将你选择的结果打印至控制台。

 

2:导入EasyGui 

方法1:最简单的导入方法,使用 EasyGui 的函数的时候,必须在函数的前面加上前缀 easygui

import easygui

easygui.msgbox("hello")

方法2:选择是导入整个 EasyGui 包, 这使得我们更容易调用 EasyGui 的函数,你可以直接这样编写代码

from easygui import *

msgbox("hello")

 

方法3:推荐的方法.这样可以让你保持 EasyGui 的命名空间,同时减少你的打字数量。导入之后你就可以这么调用 EasyGui 的函数

import easygui as g

g.msgbox("hello")

3:EasyGui 函数的默认参数

 对于所有函数而言,前两个参数是消息和标题。绝大部分的 EasyGui 函数都有默认参数,几乎所有的组件都会显示一个消息和标题。标题默认是空字符串,信息通常有一个简单的默认值。

在各类按钮组件里,默认的消息是"Shall I continue?",所以可以不带任何参数地去调用它们。这里我们演示不带任何参数地去调用 ccbox(),当选择"cancel"或关闭窗口的时候返回一个布尔类型的值:

 

import easygui as g

g.ccbox()

“Continue”--->返回1

 “Cancel”  --->返回0

 

4:使用关键字参数调用 EasyGui 的函数

假设需要使用一个按钮组件,但你不想指定标题参数(第二个参数),你仍可以使用关键字参数的方法指定 choices 参数(第三个参数)

import easygui as g

choices=["愿意","不愿意","等你有钱了愿意"]

reply=g.choicebox("你愿意嫁给我吗?",choices=choices)

 

 

5:按钮组件

5.1:msgbox()

msgbox(msg=\'(Your message goes here)\', title=\' \', ok_button=\'OK\', image=None, root=None)  #返回值:"OK"

 

msgbox() 显示一个消息和提供一个"OK"按钮,你可以指定任意的消息和标题,你甚至可以重写"OK"按钮的内容

修改按钮内容的最简单方法是使用关键字参数 

 

import easygui as g

g.msgbox("我要当第一!",ok_button=\'加油\',)

 

 

5.2:ccbox()

ccbox(msg=\'Shall I continue?\', title=\' \', choices=(\'Continue\', \'Cancel\'), image=None)  #返回值 Continue:1  Cancel:0  choices中可以有两个以上按钮,但只有第一个按钮返回1,其他都返回0

 

ccbox() 提供一个选择:Continue 或者 Cancel,并相应的返回 1(选中Continue)或者 0(选中Cancel)

注意 ccbox() 是返回整型的 1 或 0,不是布尔类型的 True 或 False。但你仍然可以这么写:

import easygui as g

import sys

if g.ccbox("要再来一次吗?", choices=("要啊要啊^_^","算了吧T_T")):

g.msgbox("不给玩了,再玩就玩坏了")

else:

sys.exit(0)

 

 

 

5.3ynbox()   #和CCbox类似

ynbox(msg=\'Shall I continue?\', title=\' \', choices=(\'Yes\', \'No\'), image=None)   #返回值 Yes:1  No:0  choices中可以有两个以上按钮,但只有第一个按钮返回1,其他都返回0

 

 

 

 5.4 buttonbox()

buttonbox(msg=\'\', title=\' \', choices=(\'Button1\', \'Button2\', \'Button3\'), image=None, root=None) #返回值 返回按钮的文本内容

 

可以使用 buttonbox() 定义自己的一组按钮,buttonbox() 会显示一组你定义好的按钮

当用户点击任意一个按钮的时候,buttonbox() 返回按钮的文本内容。如果用户取消取消或者关闭窗口,那么会返回默认选项(第一个选项)。 

 

import easygui as g

g.buttonbox("你喜欢哪种水果?",choices=("苹果","香蕉","橘子","西瓜"))

 

 5.5 indexbox()

indexbox(msg=\'Shall I continue?\', title=\' \', choices=(\'Yes\', \'No\'), image=None) #返回值 返回每个按钮的序号,从0开始 Yes:0,No:1....

 

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

 

 

5.6 boolbox()

boolbox(msg=\'Shall I continue?\', title=\' \', choices=(\'Yes\', \'No\'), image=None) #返回值 第一个按钮被选中返回 1,第二个按钮被选中则返回 0

 

 

 

6:如何在 buttonbox 里边显示图片

当你调用一个 buttonbox 函数(例如 msgbox(), ynbox(), indexbox() 等等)的时候,你还可以为关键字参数 image 赋值,这是设置一个 .gif 格式的图像(注意仅支持 GIF 格式)

g.buttonbox(\'大家说我长得帅吗?\', image=\'wugui.gif\', choices=(\'帅\', \'不帅\', \'!@#$%\'))

 

 

 7:选项组件

 7.1 choicebox()

choicebox(msg=\'Pick something.\', title=\' \', choices=()) # 双击列表中的选项或者通过“OK”按钮选择  返回选项的内容  只能返回一个

按钮组件方便提供用户一个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,更好的策略是为它们提供一个可选择的列表。

choicebox() 为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。

除了用鼠标选择列表中的选项外,还可以通过键盘选择,根据键盘的字符去选择。

 

import easygui as g

choices=["愿意","不愿意","等你有钱了愿意"]

reply=g.choicebox("你愿意嫁给我吗?",choices=choices)

 

 

 

 7.2 multchoicebox ()

multchoicebox(msg=\'Pick as many items as you like.\', title=\' \', choices=(), **kwargs) # 返回值 一个列表。双击列表中的选项返回空列表,必须通过“OK”按钮选择

multchoicebox() 函数也是提供一个可选择的列表,与 choicebox() 不同的是,multchoicebox() 支持用户选择 0 个,1 个或者同时选择多个选项

multchoicebox() 函数也是使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。

 

import easygui as g

choices=["北京","天津","上海"]

g.multchoicebox("你喜欢哪个城市?",choices=choices)

 

 

  8:用户输入组件

 8.1 enterbox()

enterbox(msg=\'Enter something.\', title=\' \', default=\'\', strip=True, image=None, root=None) #返回值为用户输入的字符串

enterbox() 为用户提供一个最简单的输入框,返回值为用户输入的字符串。默认返回的值会自动去除首尾的空格,如果需要保留首尾空格的话请设置参数 strip=False

 

8.2 integerbox()

integerbox(msg=\'\', title=\' \', default=\'\', lowerbound=0, upperbound=99, image=None, root=None, **invalidKeywordArguments) #返回值为用户输入的数字

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

 

 8.3 multenterbox()

multenterbox(msg=\'Fill in values for the fields.\', title=\' \', fields=(), values=()) #返回一个列表,列表内容是每个输入栏中输入的内容

import easygui as g

g.multenterbox("请输入以下个人信息","个人信息",["姓名","性别","年龄"])

 

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

   如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户为输入的选项。

    如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。

    如果用户取消操作,则返回域中的列表的值或者None值。

 

9:密码组件

9.1 passwordbox()

passwordbox(msg=\'Enter your password.\', title=\' \', default=\'\', image=None, root=None) #返回值 输入的密码内容

 

passwordbox() 跟 enterbox() 样式一样,不同的是用户输入的内容用“*”显示出来,返回用户输入的字符串

 9.2 multpasswordbox()

multpasswordbox(msg=\'Fill in values for the fields.\', title=\' \', fields=(), values=()) #返回值 一个列表,各个输入框的内容

 

 multpasswordbox() 跟 multenterbox() 使用相同的接口,但当它显示的时候,最后一个输入框显示为密码的形式“*”

import easygui as g

g.multpasswordbox(fields=["用户名","密码"])

 

 

10:显示文本组件

 10.1 textbox

textbox(msg=\'\', title=\' \', text=\'\', codebox=0)

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

注:text 参数(第三个参数)可以是字符串类型,列表类型,或者元祖类型。

import easygui as g

str1="""1:人之初,性本善。性相近,习相远

2:苟不教,性乃迁。教之道,贵以专

3:昔孟母,择邻处。子不学,断机杼

4:窦燕山,有义方。教五子,名俱扬"""

g.textbox(text=str1)

 

 10.2 codebox()

 

codebox(msg=\'\', title=\' \', text=\'\')

 

codebox() 以等宽字体显示文本内容,相当于 textbox(codebox=1)

 

11:目录与文件

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

11.1 diropenbox()

diropenbox(msg=None, title=None, default=None) #返回用户选择的目录名(带完整路径哦),如果用户选择“Cancel”则返回 None。 

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

g.diropenbox("我是目录框","目录选择","C:\\Python33\\Tools")

 

 

11.2 fileopenbox()

fileopenbox(msg=None, title=None, default=\'*\', filetypes=None)  #返回用户选择的文件名(带完整路径哦),如果用户选择Cancel;则返回 None。

g.fileopenbox("我是文件选择框","文件选择","*.xls")

 

关于 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"]])

 

11.3 filesavebox()

filesavebox(msg=None, title=None, default=\'\', filetypes=None) #选择文件需要保存的路径(带完整路径哦),如果用户选择Cancel则返回 None

 

 

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

filetypes 参数的设置方法请参考上边

 

12:记住用户的设置

 

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

 

 

13:捕获异常

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

EasyGui 通过 exceptionbox() 函数提供了更好的方式去处理异常,异常出现的时候,exceptionbox() 会显示堆栈追踪在一个 codebox() 中并且允许你做进一步的处理。

import easygui as g

try:

print(\'I Love FishC.com!\')

int(\'FISHC\') # 这里会产生异常

except:

g.exceptionbox()

 

以上是 知识点:EasyGui python可视化编程 的全部内容, 来源链接: utcz.com/z/388107.html

回到顶部