首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Python建立有窗口、按钮之类的图形界面

The best way to learn a programming language is to write a lot of code and read a lot of code.

到目前为止,我们的所有输入和输出都只是IDLE 中的简单文本。不过现代计算机和程序会使用大量的图形。如果我们的程序中也有一些图形就太好了。如下图所示这些图形。

GUI是Graphical User Interface(图形用户界面)的缩写。在GUI中,并不只是键入文本和返回文本,用户可以看到窗口、按钮、文本框等图形,而且可以用鼠标点击,还可以通过键盘键入。

我们目前为止完成的程序都是命令行或文本模式程序。GUI是与程序交互的一种不同的方式。有GUI的程序仍然有3个基本要素:输入、处理和输出,但它们的输入和输出更丰富、更有趣一些。

其实,我们一直都在使用GUI,像Web浏览器是GUI,IDLE也是GUI。现在我们来建立自己的GUI,为了做到这一点,就要从一个叫EasyGui的Python模块寻求一些帮助。

模块就是一种扩展方法,通过它可以向Python增加非内置的内容,这会在后面的章节内容里介绍),我们现在只需要记住,可以利用这个模块很容易地建立简单的GUI。

当然,在建立GUI之前,我需要安装EasyGui,8步搞定Python EasyGui模块安装。

第一个GUI

我们现在来建立第一个GUI。启动IDLE,在交互模式键入以下命令:

要注意import这个关键字,这会告诉Python你打算使用EasyGui模式。如果没有得到错误消息,说明Python找到了EasyGui模块。如果收到一个错误消息,或者EasyGui看上去无效,说明EasyGui安装有问题,你可以重新安装EasyGui。

现在来建立一个包含OK按钮的简单消息框,在IDLE交互模式中完成如下指令:

EasyGuimsgbox()函数用于创建一个消息框。大多数情况下,EasyGui函数的名就是相应英语单词的缩写,所以必要的英语单词还是需要有的,那会让你更容易理解字面意思。

使用msgbox()时,会看到类似这样的结果:

如果点击OK按钮,这个消息框会关闭。这时,可以在shell或终端或命令窗口中见到这样的结果:

‘OK’部分就是Python和EasyGui在告诉你:用户点击了OK按钮。EasyGui会返回信息来告诉你用户在GUI中做了什么,点击了什么按钮,键入了哪些内容等等。可以为这个响应指定一个名字(把它赋给一个变量)。试试看:

在消息框中点击OK将它关闭。然后键入:

现在用户的响应(OK)有了一个变量名user_response。

GUI输入

我们刚才使用的是EasyGui的输出函数msgbox(),就是一个消息框。消息框实际上只是对话框(dialog box)的一个例子。对话框包含一些GUI元素,用来告诉用户某些信息,或者从用户得到一些输入。输入可以是按钮点击(如OK),或者文件名,也可以是某个文本(字符串)。现在我们来使用EasyGui得到输入。

按钮框(button box,buttonbox())

EasyGuibuttonbox()函数用于创建一个包含多个按钮的对话框。如下所示:

下面来建立一个程序,在IDLE文本编辑器内键入代码清单6-1中的程序:

你只需要键入这些代码,让这个代码程序能够工作就可以了。运行这个程序后,你会看到:

选择点击你选择的品味,你会看到如下结果:

这是怎么做到的?

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

选择框(choice box,choicebox())

EasyGuichoicebox()函数用于创建一个选择列表的对话框。用户可以选择其中之一,然后点击OK按钮,如下所示:

下面我们仍然在IDLE文本编辑器内新键入代码清单6-2中的程序:

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

注意,这个列表选择框除了用鼠标点击选择,还可以用键盘上的上下箭头键选择一个选项。选择一个选项,然后点击OK时,你会看到与6-1代码的结果相同的消息框,如下图:

文本输入框(enter box,enterbox())

EasyGuienterbox()函数用于创建一种让用户键入文本的输入框。就像第5章中raw_input()一样,让用户键入文本。我们可以试试以下6-3的代码清单:

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

键入你的文本,点击OK,就像前面一样,你键入的内容会显示在消息框中。如下图所示:

当然,有时我们会期望用户输入一个很常见或最有可能的信息文本。这个最常见的文本可以由你为用户自动输入,这样用户就不用再键入了。这就需要使用enterbox()函数中的默认值(default),有了它,只有当用户有不同的输入才有必要键入,如下面所示6-4代码:

运行这个程序时,输入框中已经输入了“Chocolate”。用户可以把它删掉,再输入你想要的内容,如果默认值是你需要的,就不用再键入任何内容,只需点击OK即可。

整数框(integer box,integerbox())

我们知道,用户通过enterbox()函数输入的是一个字符串,如果想在EasyGui中输入一个数,要怎么实现呢?

其实,我们完全可以先通过enterbox()函数得到一个字符串,然后像第4章的类型转换做法那样,使用int()或者float()由这个字符串创建一个数,这样就可以达到输入数字的效果,我们来看下面的代码例子:

我们在输入框中输入12:

返回IDLE交互模式中,查看下面代码:

不过,对于数字的输入,EasyGui还提供了一种整数框(integer box ,integerbox())函数,可以用它来输入整数,还可以对所输入的数设置一个下界和上界。运行如下代码:

我们在输入框中输入23:

返回IDLE交互模式中,查看下面代码:

注意,如果我们在输入框中输入浮点数12.34,则会提示:

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

挑战一下:

第1 章中,我们创建了一个简单的猜数程序。通过这章的学习,我们试试使用EasyGui来完成这个程序的输入和输出。

EasyGui的一些说明

EasyGui 还提供了另外一些GUI 组件,包括允许多重选择(而不是只选择一项)的选择框,还有一些特殊的对话框用来得到文件名等内容。不过,对现在来说,前面介绍的GUI 组件已经足够了。

利用EasyGui,我们可以非常容易地生成一些简单的GUI,而且它隐藏了GUI涉及的很多复杂性,使你不用再操心这些问题。后面我们将会讨论建立GUI的另一种方法,它可以提供更多的灵活性和控制。

END

回顾

如何利用 EasyGui建立简单的 GUI。

ˆˆ如何使用消息框 msgbox显示消息。

如何使用按钮、选择框和文本输入框(buttonbox、choicebox、enterbox、integerbox)得到输入。

如何为一个文本框设置默认输入。

如何使用 Python 的内置帮助系统。

测试题

如何使用EasyGui 生成消息框?

如何使用EasyGui 得到字符串(一些文本)输入?

如何使用EasyGui 得到整数输入?

如何使用EasyGui 得到浮点数(小数)输入?

什么是默认值?给出一个可能使用默认值的例子。

动手试一试

试着修改第5 章中的温度转换程序,这一次要用GUI 输入和输出而不是raw_input() 和print。

编写一个程序,询问你的姓名,然后是房间号、街道和城市,接下来是省/ 地区/ 州,最后是邮政编码(所有这些都放在EasyGui 对话框中)。然后这个程序要显示一个寄信格式的完整地址,类似于:

John Snead

28 Main Street

Akron, Ohio

12345

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180212G0E74300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券