当前位置: 移动技术网 > IT编程>脚本编程>Python > Python制作表白小程序——从代码到打包exe

Python制作表白小程序——从代码到打包exe

2020年07月26日  | 移动技术网IT编程  | 我要评论

相信大家都看过在网络上有那种表白神器,就是那种不同意就不能关闭窗口,这样的技术在小白眼中特别高级,但身为技术人员的我们,这样的东西还不是小菜一碟,没有人表白咱们咱还不能自我表白嘛

前置准备

我们这里使用的编程语言是Python,使用的库是tkinter,还有其他的一些模块如requests等

其中的第三方库有requests、PIL

安装方法

pip install 库名称

此外,我们打包exe文件需要用到pyinstaller,安装方法也是pip

窗口设计

我们先来做一个好看的窗口,只有这样才能获得女神的芳心
在这里插入图片描述
关键代码如下

from tkinter import *
from tkinter import messagebox
from requests import get
from PIL import Image,ImageTk
import sys

class Window(object):
    def __init__(self):
        self.window=Tk()
        self.title="一个爱慕你的小哥哥"
        self.size=(500,340)
        self.image=Image.open('./love.jpg')

    def show(self):
        self.window.geometry("%dx%d"%self.size)
        self.window.title(self.title)
        label1=Label(self.window,text="小姐姐,我喜欢你很久了",font=("微软雅黑",15)).place(x=0,y=0)
        tk_image=ImageTk.PhotoImage(self.image)
        img_label=Label(self.window,image=tk_image).place(x=0,y=40)
        label2=Label(self.window,text="你同意我吗?",font=('微软雅黑',30),fg='red').place(x=220,y=150)
        agree_b=Button(self.window,text="同意",bg="#4e6ef2",fg="#fff",font=('微软雅黑',20),command=lambda :self.agree())
        agree_b.place(x=40,y=260)
        disagree_b=Button(self.window,text="不同意",bg="#4e6ef2",fg="#fff",font=('微软雅黑',20),command=lambda :self.disagree())
        disagree_b.place(x=270,y=260)
        self.window.mainloop()
    def agree(self):
    	pass
    
    def disagree(self):
    	pass
    
	def try_to_close_window(self):
		pass

if __name__ == '__main__':
    window=Window()
    window.show()

我这里还准备了一张图片,图片是我从网上找的,然后进行了等比例缩放,可自行保存
在这里插入图片描述
这样的话,我们就成功的有了这样一个界面

事件监听

当我们按下不同意时,会显示一个对话框,当我们按下关闭按钮时,会显示一个对话框,当我们按下同意时,会按下一个对话框后退出程序,那我们是如何实现的

显示对话框
我们通过tkinter模块的messagebox来显示对话框

messagebox.showinfo(标题,内容)

然后我们将代码修改如下

from tkinter import *
from tkinter import messagebox
from requests import get
from PIL import Image,ImageTk
import sys

class Window(object):
    def __init__(self):
        self.window=Tk()
        self.title="一个爱慕你的小哥哥"
        self.size=(500,340)
        self.image=Image.open('./love.jpg')

    def show(self):
        self.window.geometry("%dx%d"%self.size)
        self.window.title(self.title)
        label1=Label(self.window,text="小姐姐,我喜欢你很久了",font=("微软雅黑",15)).place(x=0,y=0)
        tk_image=ImageTk.PhotoImage(self.image)
        img_label=Label(self.window,image=tk_image).place(x=0,y=40)
        label2=Label(self.window,text="你同意我吗?",font=('微软雅黑',30),fg='red').place(x=220,y=150)
        agree_b=Button(self.window,text="同意",bg="#4e6ef2",fg="#fff",font=('微软雅黑',20),command=lambda :self.agree())
        agree_b.place(x=40,y=260)
        disagree_b=Button(self.window,text="不同意",bg="#4e6ef2",fg="#fff",font=('微软雅黑',20),command=lambda :self.disagree())
        disagree_b.place(x=270,y=260)
        self.window.mainloop()

    def agree(self):
        messagebox.showinfo("","我也爱你,么么哒")
        sys.exit()

    def disagree(self):
        messagebox.showinfo("","不同意是不行的哦")

    def try_to_close_window(self):
        pass

if __name__ == '__main__':
    window=Window()
    window.show()

窗口关闭按钮监听
当关闭按钮按下时,我们会弹出一个对话框,那么我们是如何实现对关闭按钮的监听的?

我们可以通过Tk对象的protocol方法来设置

Tk.protocol("WM_DELETE_WINDOW",function)

其中function就是我们在按下按钮后要执行的函数

完整代码如下

from tkinter import *
from tkinter import messagebox
from requests import get
from PIL import Image,ImageTk
import sys

class Window(object):
    def __init__(self):
        self.window=Tk()
        self.title="一个爱慕你的小哥哥"
        self.size=(500,340)
        self.image=Image.open('./love.jpg')

    def show(self):
        self.window.geometry("%dx%d"%self.size)
        self.window.title(self.title)
        label1=Label(self.window,text="小姐姐,我喜欢你很久了",font=("微软雅黑",15)).place(x=0,y=0)
        tk_image=ImageTk.PhotoImage(self.image)
        img_label=Label(self.window,image=tk_image).place(x=0,y=40)
        label2=Label(self.window,text="你同意我吗?",font=('微软雅黑',30),fg='red').place(x=220,y=150)
        agree_b=Button(self.window,text="同意",bg="#4e6ef2",fg="#fff",font=('微软雅黑',20),command=lambda :self.agree())
        agree_b.place(x=40,y=260)
        disagree_b=Button(self.window,text="不同意",bg="#4e6ef2",fg="#fff",font=('微软雅黑',20),command=lambda :self.disagree())
        disagree_b.place(x=270,y=260)
        self.window.protocol("WM_DELETE_WINDOW",lambda :self.try_to_close_window())
        self.window.mainloop()

    def agree(self):
        messagebox.showinfo("","我也爱你,么么哒")
        sys.exit()

    def disagree(self):
        messagebox.showinfo("","不同意是不行的哦")

    def try_to_close_window(self):
        messagebox.showinfo("",'不同意是不能关闭窗口的')

if __name__ == '__main__':
    window=Window()
    window.show()

打包exe

我们打开dos,cd到文件目录,然后输入

pyinstaller -F 文件名

例如我给我的文件命名为love.py,我就输入pyinstaller -F love.py
打包成功后就是这样
在这里插入图片描述
这时我们同目录会出现__pycache__、dist、build三个文件夹,在dist中就是我们要的exe文件了,其他的两个文件夹就可以删了

然后就可以把文件发给女神了,发的时候记得把图片也带上

本文地址:https://blog.csdn.net/realmels/article/details/107566384

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网