一种基于图形界面的Python代码自动生成软件的设计与实现

2021-07-13 00:32宋雅娟
长春大学学报 2021年6期
关键词:绘图代码面板

宋雅娟

(苏州职业大学 计算机工程学院,苏州 215104)

随着人工智能时代的来临, Python 语言作为人工智能时代最合适的语言,越来越受到政府的重视[1]。Python 语言是一门发展了近 30 年的编程语言,是目前美国大学最受欢迎的程序设计语言。Python 语言实际教学内容是分支、循环、函数等基本的程序逻辑关系及功能强大的函数库应用,它是目前最接近自然语言的通用编程语言[2]。为了助力初学者快速方便地学习运用Turtle库及Python基本语法知识完成图形绘制程序,设计并实现了一个应用软件,借鉴Windows画笔程序的绘图界面,用户可在界面上用鼠标绘图,软件会自动生成相应的Turtle绘图程序。这样可以一边设计一些简单图形,一边学习Python基本语法知识,熟悉Turtle库函数的使用方法,在此基础上,还可以激发用户深入学习Python语言的兴趣,最终掌握Python语言。

1 Turtle函数库

Turtle库是Python青少年编程中最重要的标准库之一,它由Tkinter库开发,借助于Turtle库,编写一些好玩又有趣的程序和小游戏,可以提高孩子们的编程兴趣,提高编程技能。Turtle库提供了很多绘图函数,表1中列出了软件中使用到的Turtle绘图函数。通过在软件中绘制不同图形,观察自动生成的Python代码,可以掌握Turtle函数的作用及参数使用方法。

表1 软件中用到的Turtle函数

2 软件功能及实现方法

借助Java软件的图形界面开发技术,结合Turtle库中的相关绘图函数而设计。系统架构如图1所示。用户可以在图形工具栏中选择基本图形按钮,使用颜色工具栏选择线条颜色、线条工具栏选择线条粗细,在绘制窗口上拖动鼠标进行图形的设计,软件会同时在Python代码窗口生成相应的Python代码。可以通过文件菜单保存图形及相应的代码、加载保存的图形及代码,通过帮助文档查阅Turtle库的函数的使用说明。

图1 系统总体架构图

软件的运行主界面如图2所示。主界面使用Java中的面板进行布局。最上面为菜单栏,由文件菜单和帮助菜单组成。上侧工具栏由基本图形选择面板与线条选择面板两个部分组成,一个提供绘图基本工具,一个提供线条粗细选择。最下面的为调色板面板,提供线条颜色及填充颜色选择。最右面的为代码面板,存放自动生成的完整Python代码。图2为软件主界面,绘图面板已经使用鼠标绘制了两个三角形,

图2 软件主界面

其中一个进行了颜色填充。右面为生成的Python代码。生成的代码在Python环境中可直接运行,结果如图3所示。对比图2与图3,可看到在界面上绘制的图形与在Python环境中运行生成的代码所得图形完成一致。这样就完成了在软件界面上所见即所得的学习方式。用户可以在界面上选择图形进行绘制,之后根据生成的代码进行Python图形库Turtle中函数的学习,图形发生变化,函数的参数随之会发生变化。从而用户可以获得对Turtle库的直观学习体验,从而激发学习兴趣。

图3 生成代码的运行效果

在绘图工具栏点选不同按钮可以使用鼠标在界面上绘制不同的图形,如图4所示。这是分别选取了直线、三角形、圆后的运行结果,对照生成的Python代码即可了解Python中不同图形的绘制函数及其参数、坐标情况。绘制图形时,如果不特别选择,则自动选择最细的线条进行各种图形的绘制。线条选择面板只提供了4种,可供学生了解线条的设置方法,之后便可以根据此规律自行修改代码以使用其他尺寸的线条,更有助于学生自行设计自己的线条设置程序。

图4 使用绘图工具栏绘制不同图形

图5给出了线条选择面板及选择不同粗细线条在画图板上画出的两个矩形,对照右侧的生成代码即可掌握到在Python的Turtle库中设置线条粗细的函数是Turtle.pensize,函数参数是以数值给出的线条精细值。

图5 选择不同线条画出的矩形

调色板面板是以不同颜色块为图形的按钮集合,如果颜料桶按钮被按下,则点击后的颜色将用于设置填充色,否则用于线条颜色。颜色以按钮方式展示常用的颜色,没有提供自定义颜色是为了让学生了解Turtle库的设置颜色方法后自行修改代码来完成其他颜色的设计。图6为使用调色板绘制的彩色填充图形。从生成的代码中能看到设置填充色的函数使用,以及begin_fill()与end_fill()函数的应用。

图6 使用调色板填充的蓝色矩形

代码面板有一个JTextArea控件来存放生成的代码。用户可在此部分直接拷贝生成的代码到Python环境中运行,观察运行结果,并在Python环境中修改代码,加深对程序的理解。图6代码在Python环境中的运行结果如图7所示。

图7 生成代码在Python环境中运行的结果

程序应用面向对象的原理来实现,使用不同的类来表示不同的图形。类中使用成员变量来保存图形的线条颜色、填充颜色、坐标、大小等信息。在鼠标事件中响应鼠标运作,运用Java中的绘图函数在屏幕上进行图形的绘制,在绘制结束松开鼠标时,生成图形对应类的对象,并提取线条粗细、颜色,起始位置等信息存放于该对象中,设置完成后将该对象保存到所有图形对象列表中。之后调用generateCode方法生成程序开头代码,调用各类重写后的getCode方法生成每个图形的对应Python代码,再生成程序结尾代码。所有代码最后将显示在代码窗口中。

3 结语

Python语言具有丰富的函数库,为了促进学生更好、更直观地学习Turtle库中的函数以及Python的基本知识,设计实现了一个所见即所得的图形用户界面。学生可以在界面上选择不同线条粗细、不同颜色、不同图形进行基本图形和复杂图形的绘制,在绘制的同时,软件会通过程序自动生成相应的Python代码。使用该软件,学生可以快速了解Turtle库中的函数以及具体用法,并掌握绘图程序整体架构、Turtle的坐标体系。生成的代码可以直接放到Python中运行,得到跟软件界面绘制图形一样的效果。在此基础上,学生可以扩展程序、使用Python实现更复杂、更丰富的图形和动画程序。软件目前只实现了基本图形绘制、颜色填充,为了让软件更适合应用于复杂图形的设计,可以对程序进行扩充,增加橡皮、图形移动、复制、动画设计的功能。

猜你喜欢
绘图代码面板
编辑部故事
第 一 季度AMOLED面板出货量京东方全球第二
寸步难行
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
绘图机器人
近期连续上涨7天以上的股
面板厂商向大尺寸转移2015年LCD电视面板增长目标仅为3%