第六章GUI-图形用户界面之选择你的口味,,


  6.4 选择你的口味

  我们将举一个挑选冰淇淋品味的例子来学习利用EasyGui从用户得到输入(冰淇淋口味)的不同方法。

  有多个按钮的对话框

  下面来创建一个包含多个按钮的对话钮(如消息框)。具体做法是使用一个按钮框(button box,buttonbox)。下面来建立一个程序,而不是在交互模式中完成。

  在SPE中,(如果你不使用SPE,也可以是另一个文本编程器)新建一个文件。键入代码清单6-1中的程序。

  与孩子一起学编程-python教程

  方括号中的代码称为一个列表(list)。我们还没有讨论列表,这部分内容将在第12章介绍。对现在来说,只需要键入这些代码,让这个EasyGui程序能够工作(如果你确实很好奇,也可以跳到第12章看个究竟……)。

  保存文件(我的文件就命名为ice_creaml.py),运行这个程序,你就会看到下边这个界面。

  与孩子一起学编程-python教程

  然后,根据你选择的口味,你会看到下图这样的结果了。

  与孩子一起学编程-python教程

  这是怎么做到的?用户点击的按钮的标签就是输入(input)。我们为这个输入指定了一个变量名,在这里就是flavor。这就像使用raw_input(),只不过用户并不是键入,而是点击一个按钮。这正是GUI的关键。

  选择框

  下面来看用户选择口味的另一种方法。EasyGui提供了一种选择框(chocie box,choicebox),它会显示一个选择列表,用户可以选择其中之一,然后点击OK按钮。

  要尝试选择框,只需要对代码清单6-1中的程序做一个很小的修改:把buttonbox 改为chocebox。这个新版本的程序见代码清单6-2.

  与孩子一起学编程-python教程

  保存代码清单6-2中的程序并运行。你会看到类似下面的结果。

  与孩子一起学编程-python教程

  选择一个口味然后点击OK时,你会看到与前面相同的消息框。注意,除了用鼠标点击选择,还可以用键盘上的上下箭头键选择一个口味。

  如果点击Cancel,程序会结束,你还会看到一个错误。这是因为程序的最后一行希望得到某个文本(如Vanilla),倘若你点击Cancel,它将得不到任何输入。

  与孩子一起学编程-python教程

  我也遇到了同样的问题,不过因为在这本书里放上这个巨大的选择框不太合适,所以我耍了点小聪明,稍稍做了点处理!我修改easygui.py,让选择框变小一些,这样放在这本书里看上去会好一些。你不需这么做,但如果你确实想试试看,下面我就把步骤告诉你,不过提醒你一句,这可有点复杂哦!

  (1)找出easygui.py文件中以def_choicebox开头的一节(在我的easygui.py中大约在613行。)要记住,大多数编辑器(包括SPE),都会在靠近窗口最下面的某个位置显示出代码行号。

  (2)从这个位置向下大约30行(大概是645行),会看到类似下面的代码行:

  与孩子一起学编程-python教程

  (3)把0.8改为0.4,再把0.5改成0.25.保存对easygui.py做的这些修改。下一次运行程序时,选择框窗口就会小一些了。

  文本输入

  这一章中的例子允许用户从你(程序员)提供的一组选项中做出选择。如果你想像raw_input()一样,该怎么做呢?这样用户就可以输入她喜欢的任何口味了。EasyGui提供了一种输入框(enter box, enterbox)能够做到这一点。可以试试代码清单6-3中的程序。

  与孩子一起学编程-python教程

  运行这个程序时,你会看到:

  与孩子一起学编程-python教程

  然后键入你最喜欢的口味,点击OK,就像前面一样,你键入的内容会显示在消息框中。

  这就类似于raw_input(),同样可以从用户得到文本(一个字符串)。

  默认输入

  有时用户输入信息时,可能会期望得到某个答案,或者有一个很常见或最可能输入的答案。这称为默认值(default)。这个最常见的答案可以由你为用户自动输入,这样用户就不用再键入了。有了默认值,只有当用户有不同的输入时才有必要键入。

  要在一个输入框中放入默认值,可以按照代码清单6-4修改你的程序。

  与孩子一起学编程-python教程

  现在运行这个程序时,输入框中已经输入了“Vanilla”(香草)。可以把它删掉,再输入你想要的内容,不过如果你最喜欢的口味确实是香草,就不用再键入任何内容,只需点击OK。

  数字呢

  如果想在easygui中输入一个数,完全可以先通过输入框得到一个字符串,然后使用int()或者float()由这个字符串创建一个数。

  EasyGui还提供了一整数框(integer box,integerbox),可以用它来输入整数。还可以对所输入的数设置一个下界和上界。

  不过,整数框不允许输入浮点数(小数)。要输入小数,必须先通过输入框得到字符串,然后再使用float()转换这个字符串。

评论关闭