Python-tkinter我用来做桌面应用,他用来撩妹
一、前言
现在看动漫,追电视剧,如果不开弹幕,感觉都失去了灵魂,不知道大家是不是也和我一样的感觉。于是突发奇想,弹幕可不可以让他显示在桌面上呢?在之前,我们已经可以在桌面上画上一堆可爱的爱心,为了让这些弹窗更加“惹人喜爱”,我们是不是可以将他们结合起来。
二、需求
我们需要实现弹幕,需要考虑好我们需要实现达到什么效果。
1、需要有弹幕滚动效果
2、有文字,有爱心
3、屏幕显示位置(上,中,下,全屏)
4、数量要多。
三、思路
已经有需求了,我们来整理一下思路:
1、实现一个窗口,窗口添加文字,或者爱心
2、让窗口滚动起来
3、控制弹幕出现的位置
4、控制弹幕的数量
要点:
1、考虑到弹窗位置多变,因此我们统一设置为区间,可控。
2、当弹幕滚动出屏幕之后,我们需要关闭弹幕或者重新开始滚动。
四、需求实现
第一步:实现窗口,添加文字或者爱心
在之前我们已经实现了一个弹窗的编写,还是比较简单的,这次,我们需要将爱心,和文字分开,方便后面的弹幕实现。
桃心弹幕
文字的话,因为是弹幕,数量肯定很多,因此我们用列表来管理我们需要的弹幕文字,这里我简单放入几个弹幕。并随机写入弹幕中。
文字弹幕
我们可以控制字体,以及字体的大小,按照需要设置。
使用这行代码,查看支持的字体。
做到这里,突然发现,我们的窗口如果依次调用函数的方式,
会发现,桃心出来了,文字一起出来了,但我们需要的是其中一个就可以,那要如何达到这种目的呢?
可以简化为:
如果随机到1,就是桃心弹幕,如果随机到2,就是文字弹幕。
第二步:让窗口动起来
我们已经搞定基础的弹幕准备条件,接下来就需要让我们的弹幕动起来。需要移动,因此,我们需要再次对坐标进行讨论。
之前,我们已经知道,在屏幕上的坐标轴。
在此基础上,我们需要在坐标水平移动,那移动的函数图像,就为
也就是说,当y逐渐增大,x不变。因此我们就得到了弹窗的移动路径。得到了移动路径,那如何移动窗口的位置呢?这里我们就用到窗口更新方法。update()然后我们来实现。y增加,x不变。就得到:
这里,我们处理超过边界,如果超过之后,我们就关闭弹窗。另外一种方式,超过,我们进入循环,重新开始。
如果超过了,我们就将y定义为负数,保证文字从左边慢慢出来,如果设置为0,就会出现突然出现一行字的情况,而不是慢慢出现。
这里,我们使用到了递归的方法,重复去调用move方法。以达到移动的目的。
需要注意的是,当递归超过一定次数时,就会报措。因为这个是程序默认的递归次数。如果出现下面这个错误,你成功遇到了递归的第一个坑。
那如何解决这个问题呢?
这里我们需要自己设置,去修改它的默认值,防止报措。
第三步:控制弹幕出现位置
我们已经可以控制弹幕的移动,接下来就是控制弹幕的出现位置。控制弹幕出现位置,需要修改的是窗口的坐标。因此就可以修改坐标位置。
弹幕出现在上半部分
弹幕出现在中间部分
弹幕出现在下半部分
弹幕出现在整个屏幕区域
第四步:控制弹幕的数量
接下来,我们需要将弹窗数量增加到我们需要的数量,也是为了给她惊喜是吧。增加延时,让弹窗依次延迟生成。
第五步:各种弹幕展示
爱心弹幕
文字弹幕
爱心文字组合弹幕
从右往左
五、文章总结
文章主要使用模块tkinter,tkinter更新窗口方式实现移动,递归的简单应用。线程组的简单应用。函数图像 f ( x)= b ( b∈ R) 的应用。
获取完整代码:公众号回复 “爱心弹窗”
领取专属 10元无门槛券
私享最新 技术干货