欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-20 17:27:02
相信大家都看过在网络上有那种表白神器,就是那种不同意就不能关闭窗口,这样的技术在小白眼中特别高级,但身为技术人员的我们,这样的东西还不是小菜一碟,没有人表白咱们咱还不能自我表白嘛前置准备我们这里使用的编程语言是Python,使用的库是tkinter,还有其他的一些模块如requests等其中的第三方库有requests、PIL安装方法pip install 库名称此外,我们打包exe文件需要用到pyinstaller,安装方法也是pip窗口设计我们先来做一个好看的窗口,只有这样才能获得女神...

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

前置准备

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

其中的第三方库有requests、PIL

安装方法

pip install 库名称

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

窗口设计

我们先来做一个好看的窗口,只有这样才能获得女神的芳心
Python制作表白小程序——从代码到打包exe
关键代码如下

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()

我这里还准备了一张图片,图片是我从网上找的,然后进行了等比例缩放,可自行保存
Python制作表白小程序——从代码到打包exe
这样的话,我们就成功的有了这样一个界面

事件监听

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

显示对话框
我们通过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
打包成功后就是这样
Python制作表白小程序——从代码到打包exe
这时我们同目录会出现__pycache__、dist、build三个文件夹,在dist中就是我们要的exe文件了,其他的两个文件夹就可以删了

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

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