使用Python制作随机提问程序

2021-10-30 23:26吴玉栋
中国信息技术教育 2021年20期
关键词:文本框控件字典

吴玉栋

随着新课改的进一步深化,笔者所在地区的中小学信息技术教材增加了Python程序设计语言章节,Python是一种面向对象的解释型计算机程序设计语言,能够把用其他语言制作的各种模块很轻松地联结在一起。Python语言简明,逻辑清晰,适合中小学阶段的学生学习。

在常规情况下,使用Python编制好的程序代码是命令行界面执行方式;tkinter是Python中制作GUI界面的入门模块,语法简单,可以快速上手制作学习。这里,笔者利用tkinter模块制作一个简单的随机点名或者提问的小程序,在课堂上,教师可以使用该程序对本班级内的学生进行随机点名或提问,进而活跃课堂气氛。

● 功能分析

可视化编程是一个系统工程,要遵循“功能—界面—代码”的基本设计顺序,核心的内容是数据的组织、变化与流转。随机点名小程序要实现的功能是,在不同的班级中,输入班级号然后点击按钮,随机显示出该班级中某一名学生的姓名,再次点击按钮,随机显示另一名学生的姓名。在本案例中,原始数据保存在文本文件中,通过open()函数读取到内存的变量列表中,再按照班级进行字典的键值对映射,获取的班级号作为字典的键,获取的班级名单作為字典中班级映射的值。“开始”按钮的功能就是从字典的值中随机取出一个学生姓名,在窗体上显示出来。

因此,笔者计划使用两个模块,分别是tkinter和rendom,tkinter模块用于制作GUI窗体;random模块用来随机抽取列表中的元素。规划三个窗体控件,输入班级号,显示抽取的姓名和开始抽取的按钮。

● 引入模块

Python可以通过引用或者调用模块,实现使用模块中的函数和功能。下面,简要介绍一下模块的调用方法(如下表)。

在调用模块的方式中,笔者推荐使用第二种方式,调用模块并且使用别名和程序中的其他函数进行区分,这样程序代码看起来更清晰,易读性更强。调用模块的代码如图1所示。

● 制作窗体

在tkinter模块中需要使用Tk()函数,生成GUI窗体并命名为ROOT。常见的窗体包含的部件有标题、边框等,且需要使用主消息循环模式设置窗体始终显示在屏幕。设置窗口的标题为“随机提问”,窗口的大小为300×200像素,窗口的边框不可调。包含的代码如下页图2所示。

● 添加控件

在可视化的程序中,用于人机交互的部分通常称之为窗口或控件,在tkinter中具备基本的常用控件,用于制作可视化的小程序。根据程序的功能分析,笔者计划添加文本标签(Label)——分别用于在窗体上显示提示文字、随机抽取的结果,文本框(Entry)——用于输入班级号,按钮(Button)——用于开始随机抽取姓名,将其作为程序的主要输入输出功能部分。包含的代码如图3所示。

控件添加完成,按F5键查看界面运行效果,如图4所示。

● 分析功能

程序的核心部分是数据的组织、变化和流转,这里要制作的程序就是要读取文本文件中的数据,进行遍历转为列表,再把列表中的元素按照班级映射为字典,并从文本框中获取班级号,从字典中获取该班级号对应的列表,再随机抽取该列表中的某个元素,显示到文本标签上。

功能分析:文本文件的内部格式如图5所示,班级和姓名使用一个制表符间隔,常用信息可以先从Excel复制到文本文件,接着在Python中使用open()函数打开文本文件,使用readlines将其全部读取为一个列表,并遍历该列表,替换其中每个元素尾部的回车符号,进而转换为子列表,读取其中的第一个元素增加到字典,第二个元素作为该键的值保存到字典中。流程图如图6所示,自定义函数代码如下页图7所示。需要注意的是,x.get()用于获取文本框中的数据,x.set()用于设置文本标签的值,x.choice()用于随机从列表中获取一个元素。

● 添加代码

数据流分析过程为:首先用户在文本框中输入班级数据,点击“开始”按钮,根据接收到的数据,从字典中获取指定键映射的值,并从值中随机抽取一个元素,传递到文本标签并显示,此时文本框和文本标签中的文本要以变量的形式显示,“开始”按钮控件调用自定义函数实现以上功能。

文本框代码如图8所示。

文本标签代码如图9所示。

开始按钮代码如图10所示。

程序最终运行界面及效果如图11所示。

总之,通过简单的随机点名小程序的制作,让学生体会到GUI界面的程序更方便用户使用,而理解隐藏在控件背后的数据流转和函数调用才是实现程序功能的核心。在此基础上,让学生进一步体会数据在程序中的组织和流转过程,从而使其对程序的制作和使用有更深的理解。

猜你喜欢
文本框控件字典
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
巧用文本框实现PPT多图片排版
PPT文本框的另类应用
字典的由来
大头熊的字典
图片动画玩异样
正版字典
文本框酷变3D效果
利用VF6.0的Timer控件实现动画效果