这是一篇对于近来闲着无聊搞的tkinter小程序的汇总。
首先说一下版本是python3.6,在python3.x以后,tkinter已经是内置模块了,不需要额外安装。
这是在网上找的Tkinter知识框架图:
tkinter内部的组件和方法很多,对于tkinter这个模块,个人不建议专门找一本书啃下来,最好的学习方式,就是在项目中边查边练,毕竟想一口气把所有内容记住也不太现实。
下面是我自己做的一些项目的汇总,难度不大,重点是挺有趣的:
1.王者荣耀抽卡程序花果山美男子:tkinter版自制王者荣耀抽卡程序zhuanlan.zhihu.com花果山美男子:tkinter版自制王者荣耀抽卡程序(2)zhuanlan.zhihu.com
这里面用的都是最基本的tkinter组件,包括button、label、text文本框和messagebox消息框等,最核心的内容是label中图片的更新,其中如果是jpg格式需要用ImageTk.PhotoImage来转换。
2.简易提词板花果山美男子:tkinter做一个简易提词板zhuanlan.zhihu.com花果山美男子:tkinter做一个简易提词板(2)zhuanlan.zhihu.com
第一篇文章利用for循环实现了文字的动态更替效果,原理是label中文字的更新;
第二篇文章改用StringVar和.after()的递归调用来实现,这种方法可以接收外部响应。
3.体重档案花果山美男子:tkinter做一个体重档案zhuanlan.zhihu.com花果山美男子:tkinter做一个体重档案(2)zhuanlan.zhihu.com
这是一个比较复杂的项目,结合了万年历、秒表和照片查看器等功能。展示了如何用类来实现tkinter的项目,结构比较完整。
用到的最主要的控件还是label,同时用到了.bind来绑定组件和鼠标事件。
4.模拟发牌花果山美男子:tkinter模拟扑克牌和狼人杀发牌zhuanlan.zhihu.com花果山美男子:tkinter模拟斗地主发牌zhuanlan.zhihu.com
这是一个canvas画布的实例,本质就是将画布布置在Tk界面上,然后再在画布上进行绘制和布局。第一篇文章模拟了发牌结果和简单动态效果,第二篇文章则对斗地主发牌过程进行了完整的模拟,用到了对于画布指定组件的删除。
5.视频播放器花果山美男子:tkinter做一个本地视频播放器zhuanlan.zhihu.com花果山美男子:tkinter做一个本地视频播放器(2)——弹幕zhuanlan.zhihu.com
这个项目结合了opencv和canvas画布,实现本地视频文件的播放(无声音),如果想要收音,只能单独提取出音频文件,与视频同时播放。以上方法还可用于摄像头的实时监控,以及多个摄像头监控的同时显示。
第一篇文章的干货很多:文中还提到了如何用moviepy库提取并保存视频文件中的音轨,以及用pygame库播放mp3文件和python的多进程运行。最后还简单介绍了用如何实现视频的暂停、倍速和进度条功能;
第二篇文章在前文基础上,增加了播放列表、实时弹幕和跳转进度的功能;用到了下拉框ttk.Combobox和滚动条Scale。
6.画板花果山美男子:tkinter实现简易画板zhuanlan.zhihu.com
这篇文章利用canvas画布自带的绘制图形的函数,实现了一个简单的画板。其中主要用到了鼠标事件的绑定;本项目的难点是利用对canvas指定组件的删除,实现“撤销”功能;同时提到了在canvas不提供保存图片的前提下,如何用PIL库来截屏。
7.五子棋花果山美男子:tkinter实现类五子棋游戏zhuanlan.zhihu.com
这篇文章以五子棋为基础,开发出了一种新的玩法——“四五棋”。主要用到了canvas画布的图形绘制和Label的文字显示,难点在于每次落子后的相应算法判断。
8.篮球经理游戏花果山美男子:tkinter模拟篮球经理游戏zhuanlan.zhihu.com
900多行代码实现一个模拟版的篮球经理。
9.圆盘时钟花果山美男子:tkinter做一个圆盘时钟zhuanlan.zhihu.com
这篇文章复习了canvas绘制图形的方法,并用它们实现了一个简单的圆盘时钟。
10.拼图花果山美男子:tkinter做一个拼图游戏zhuanlan.zhihu.com
这篇文章主要运用了canvas画布与鼠标事件的绑定,其中"" 是拖动左键,
""是点击左键,""是点击右键,"" 是移动鼠标;同时介绍了变量的批量创建与调用。
11.小人走路动画花果山美男子:tkinter实现小人走路动画zhuanlan.zhihu.com
这篇文章依然用canvas画布与鼠标事件的绑定,实现了简单的动画效果。
后续有待补充……