在少儿编程中使用easygui(6):buttonbox/indexbox

前面所介绍的easygui中的对话框,除了msgbox外,基本都是可以接收用户输入或者可以让用户进行选择的。如果不需要用户输入,且只有有限的几个选项供用户选择,那么可以用更加直观的两个对话框:buttonbox和indexbox。buttonbox和indexbox都可以自己设置若干个按钮让用户选择,他们的区别主要在于buttonbox返回的是按钮上的文字,而indexbox返回的是按钮的索引。它们的原型如下:

buttonbox(msg='',title=' ',choices=('Button[1]','Button[2]','Button[3]'),image=None,images=None,default_choice=None,cancel_choice=None,callback=None,run=True)
indexbox(msg='Shall I continue?',title=' ',choices=('Yes','No'),image=None,default_choice='Yes',cancel_choice='No')

其中,buttonbox可以指定一张图片(通过image参数)或者多张图片(通过images参数),并且图片也会当做按钮,可以点击,返回图片的文件名。但需要注意的是,image参数和images参数同时只能使用一个,指定了image参数就不能使用images参数,反之亦然。而indexbox只能指定一张图片,并且图片名称必须也在choices列表或者tuple中,否则点击图片返回的时候,会抛出异常(主要的原因是我们可能需要通过返回的索引来获取对应的按钮文字值或图片名称,所以这里会强制将图片包含到choices列表或元祖中)。两者还有一个重要的区别是buttonbox可以指定callback回调函数,但indexbox不可以。

下面我们来看一下两者的使用示例。

from easygui import *
choices = ('Scratch', '乐高','Python','C++');
a = indexbox(msg='请选择开设的课程', title='选择课程', choices=choices, image='python.png', default_choice='Yes', cancel_choice='No')

print(choices[a])

它的运行效果如下:

注意程序中我们指定了一张图片作为选项,所以正确的做法是需要在choices列表或者元组中将图片文件名也包含进去,而程序中并没有,因此当点击图片的时候,将会发生以下异常:

AssertionError: There is a program logic error in the EasyGui code for indexbox.
以上程序可以在下面页面直接运行,读者可以直接在页面上修改查看效果:

少儿编程教学平台 - Python作品:easygui indexbox的使用https://www.cncoding.cn/python/public_142042buttonbox的用法也类似,我们直接来看例子:

from easygui import *
choices = ('Scratch', '乐高','Python','C++');
a = buttonbox(msg='请选择开设的课程', title='选择课程', choices=choices, images=("python.png","scratch.png"), default_choice='Scratch', cancel_choice='Python')
print(a)

此时因为其返回值是点击的图片的文件名或者按钮上的文字,所以并不需要将图片名称包含在choices中,无论是用image参数指定单张图片还是用images指定多张图片。

它的执行效果如下图所示:

可以直接点击以下链接直接查看运行:

少儿编程教学平台 - Python作品:easygui buttonbox的使用https://www.cncoding.cn/python/public_142941

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值