一、前言


还记得之前有发布了一篇满屏弹窗的文章,得到了不少粉丝的关注,对这个弹窗也是特别的喜欢,很多人也获取到了想要的源代码,但是……

这怎么可以被原谅,我们的公众号主打就是浪漫,兴趣。显然,平淡的弹窗已经无法满足我们的需求了,因此这个需求得改。这次,我们要让大家感受到浪漫。先看图:

python桌面软件开发 python桌面应用程序开发教程_python桌面软件开发

二、编程思路分析

在每一段程序的编写中,我们一定要清楚我们要做什么,第一步要实现什么,第二步要实现什么,而不是说我们要一步到位。道理大家都应该懂,那我们来分析一下我们要如何去实现我们的最终目的。我们的最终目的是桌面显示一堆桃心。

分析:

第一步:先实现一个桌面窗口

第二步:画一个桃心。

第三步:创建多个窗口,并让窗口随机显示桌面位置

第四步:为窗口添加文字。

第五步: 让我们的窗口透明,去除边框

三、代码实现

接下来,我们来看一看完整的代码实现过程。

第一步:先实现一个桌面窗口

我们需要先实现一个窗口,为后续的开发打下基础,这里创建窗口大小需要注意我们使用的是tk.geometry()函数,这里 宽x高+y+x,x和y代表的是我们窗口所在的坐标点,如图,从屏幕左上角定为(0,0)往下为x轴,往左是Y轴。我们生成的桌面应用的位置,就是左上角的坐标点位置。

python桌面软件开发 python桌面应用程序开发教程_python桌面软件开发_02

代码如下:

class Window():
    def __init__(self):
        self.tk = tkinter.Tk()
        self.w = self.tk.winfo_screenwidth()
        self.h = self.tk.winfo_screenheight()
        self.tk.geometry("200x200+400+0")  # 宽x高+y+x,其中y表示y轴点,x表示x轴点
        self.tk.mainloop()

第二步:画一个桃心。

桃心的画法,其实在之前文章也有画过,当时是单独用一篇文章来描述的,文章结尾我们用到的知识点,我们都会把链接展示出来,供大家学习交流。

桃心的画法,我们需要先画两个扇形,然后画一个三角形,然后拼接在一起,这样就表示出来桃心,另外,值得一提的是,三角形画法其实是多边形画法,我们可以往后加多个坐标点。

如图:

python桌面软件开发 python桌面应用程序开发教程_python_03

代码如下:

color = "pink"
# 绘制左半边180度的一个扇形
coordinate = (50.0, 50.0, 100, 100)
self.semicircle = self.canvas.create_arc(coordinate, start=0, extent=180, fill=color, outline=color)
# 绘制右半边180度的一个扇形
coordinate = (100, 50.0, 150.0, 100)
self.semicircle2 = self.canvas.create_arc(coordinate, start=0, extent=180, fill=color, outline=color)
# 绘制1个三角形,组成桃心形状
coordinate = (50.0, 75.0, 150.0, 75.0, 100, 125.0)
self.triangle = self.canvas.create_polygon(coordinate, fill=color, outline=color)

这样,我们就画出了一颗粉红色的桃心。如果需要换颜色,可以修改color。

第三步:创建多个窗口,并让窗口随机显示桌面位置

我们已经实现一个桃心窗口了,接下来,我们要让窗口变得多起来。如何实现呢。这里我们就需要使用到线程模块 threading。让我们的线程运行起来。

代码如下:

if __name__ == '__main__':
    for i in range(10):
        t = threading.Thread(target=Window)
        t.start()

这样我们就创建好了多个窗口,如图:

python桌面软件开发 python桌面应用程序开发教程_python_04

我们可以从图中看出,我们虽然创建了多个窗口,但是位置却是在同一位置,这时,我们就需要去修改我们弹窗的位置信息了,确保每次生成的弹窗的位置都是不一样的。

修改弹窗生成的代码:

self.w = self.tk.winfo_screenwidth()
self.h = self.tk.winfo_screenheight()
self.x = str(random.randint(0,int(self.h)))
self.y = str(random.randint(0,int(self.w)))
self.tk.geometry("200x200+"+ self.y + "+" + self.x)  # 宽x高+y+x,其中y表示y轴点,x表示x轴点

这样,我们级得到了不在同一个坐标点位置的弹窗。

python桌面软件开发 python桌面应用程序开发教程_treading_05

第四步:为窗口添加文字。

接下来,我们需要给我们的弹窗增加一些装饰,单调的弹窗,是不是有点不合适,因此,我们需要给弹窗增加文字。然后我们就得到了爱你。

代码如下:

self.text=self.canvas.create_text(100,80,text="爱你")

python桌面软件开发 python桌面应用程序开发教程_python_06

python桌面软件开发 python桌面应用程序开发教程_python_07

第五步: 让我们的窗口透明,去除边框

接下来就是最最重要的一个步骤,让我们的弹窗只剩下桃心和文字。直接看代码:

self.tk.attributes("-transparentcolor", "#F0F0F0")
self.tk.attributes("-toolwindow", True)
self.tk.overrideredirect(True)

python桌面软件开发 python桌面应用程序开发教程_爱心_08

这样,我们就得到了,满屏的爱心,接下来,我们给它加上一点延迟,让他依次弹出来。

这里使用到time模块。

time.sleep(0.5)#0.5秒延迟

python桌面软件开发 python桌面应用程序开发教程_python桌面软件开发

四、文章总结

文章主要讲述tkinter模块的简单应用,主要使用tkinter的基础属性,以及扇形的画法,三角形的画法。以及treading模块,多线程的应用。