Alg-4:算法可视化tiny库的实现
好吧,准备好好实践一下《算法》这本书的内容的,有点讨厌的是这本书是以Java作为示例语言的(好吧,我承认我有语言偏见,Java就是臭)。其中有一个Std库,其中涉及到简化输入输出、随机数生成、算法可视化的内容。里面的大部分功能在Python中早就是标配了~~~。唯独有一个用于算法可视化的StdDraw类Python没有build-in包。扩展包到时有很多(如Matplotlib),但是只是要和书本同步那几个小功能,没必要杀鸡用牛刀。就想着用Python自带的Tk实现以下。
主要目标如下:
- 完成和书本中的StdDraw一样的API接口
- 要有个简单的GUI窗口用于图像的显示和保存
技术选择:
由于GUI操作很少,所以采用python自带的Tk GUI库,结合图像处理主要下面三种组合
1.纯Tk canvas (依赖少,Python发行版完全自带)
2.Tk + PIL (需小型扩展PIL/pillow)
3.Tk + maplotlib (需要一个大的扩展包)
现在采用的是第二种方案,原因是方便处理图片格式。但是这种方案目前有些问题:
- Tk本身的颜色、字体设置和PIL是不同的
- PIL本身是进行图像处理的,不方便进行坐标的转换及坐标范围的缩放
- Tk和PIL进行交互时有点阻碍,不能很好的进行扩充
计划下一步先将Tk+PIL这种方案的实现好,接着采用第一种方案完全实现Java的接口(包括其中的动态显示)
目前的成果
- GUI界面,logo水印,基础图形绘制以及Text呈现:
- 无序列表可视化
- 有序列表可视化
Github Update
![](https://images2018.cnblogs.com/blog/673170/201807/673170-20180729005734951-1439078997.png)
还真有人点开啊🤣随意随意😂