程序员的浪漫——教你表白,让你的女神不会拒绝

自古逢秋悲寂寥,我言秋日胜春朝。
晴空一鹤排云上,便引诗情到碧霄。

——刘禹锡 《秋词》

自古以来每逢秋天都会感到悲凉寂寥,可也有人反映其道而行,如刘禹锡认为秋天要胜过春天,这让我不禁想到去年朋友圈里刷屏的‘秋天的第一杯奶茶’,看到那些人秀恩爱,你是不是心里有一万只草泥马奔驰而过,今天教你一招让你的女神无法拒绝

先看一看效果图

在这里插入图片描述

进入正题

我的开发环境:python3.8
计算机系统:Windows10
开发工具:pycharm
要用的包:tkinter、random

图片放在这要用自取

在这里插入图片描述

在这里插入图片描述

开始写代码

import tkinter as tk
import tkinter.messagebox as mb
from random import randint

win = tk.Tk()
win.title('表白')         # 窗口名称
win.geometry('800x500+350+150')     # 窗口大小及位置


win.mainloop()

win.geometry(‘800x500+350+150’)里的x是字母x,前两个数据是窗口大小,后两个数据是窗口位置,运行起来就会出现一个空白的窗口

在这里插入图片描述

将页面的内容填充一下

canvas = tk.Canvas(win, width=600, height=300)
image_file = tk.PhotoImage(file='./love.png')
image = canvas.create_image(450, 0, anchor='n', image=image_file)
canvas.pack(side='top')

tk.Label(win, text='小姐姐,\n观察你很久了!\n做我女朋友好不好?', font=('微软雅黑', '20')).place(x=100, y=100)
tk.Button(win, text='同意', command=agree, width=13, height=2).place(x=150, y=350)
tk.Button(win, text='考虑考虑', command=consider, width=13, height=2).place(x=350, y=350)
bt= tk.Button(win, text='拒绝', command=refuse, width=13, height=2)
bt2.place(x=550, y=350)

这里注意,第三个拒绝按钮不要再后面直接接.place(),因为我们要对拒绝按钮进行一些处理,如果加.place()的话就不是单纯的按钮了

运行会效果如下

在这里插入图片描述

这里有一个问题,导入图片之后经常会有这样的问题:couldn’t recognize data in image file “./love.png”

说无法识别图像文件的数据,我看网上有很多人说只支持gif格式的,我是这样解决的,我用PS打开图片再导出就可以了,格式亲测jpg、png、gif都可以,没有PS的可以尝试一下其他的图片工具

接下给按钮添加功能

先写考虑按钮

def consider():
    mb.showinfo('别纠结了', '你完了,你妈让你嫁给我')
    mb.showinfo('别纠结了', '你爸也是这么说的')
    mb.showinfo('别纠结了', '你奶奶也让你嫁给我')
    mb.showinfo('别纠结了', '你哥哥也同意了,你全家都同意')
    mb.showinfo('别纠结了', '你闺蜜说嫁给我没错')
    mb.showinfo('别纠结了', '你爸说不同意就打你')
    mb.showinfo('别纠结了', '接受现实吧,我会对你好的')
    mb.showinfo('别纠结了', '你都是我的人了')

这里用的是之前导入的包:import tkinter.messagebox as mb 是用来弹出提示框的

拒绝按钮的功能

def refuse():
    x = randint(10, 600)
    y = randint(10, 400)
    bt2.configure(text=word[randint(0, len(word) - 1)])
    bt2.place(x=x, y=y)
    
    
word = [
    '我会对你好的', '你爸妈都同意了', '我有车有房', '家务我来做', '孩子我带', '在考虑一下吧', '孩子想生就生', '我妈会游泳', '你最好看', '给你买包', '钱都给你', '都给你买', '我秒回消息', '不存私房钱'
]

点击后会随机出现在界面任意位置,并且内容也会发生改变

也有进阶的,给按钮添加鼠标监听事件,只要鼠标移动到按钮上就会触发,按钮会随机出现在界面任意位置

def a(eve):
    if a:
        x = randint(10, 600)
        y = randint(10, 400)
        bt2.configure(text=word[randint(0, len(word) - 1)])
        bt2.place(x=x, y=y)
        
        
bt2.bind('<Motion>',a)

同意按钮功能

def agree():
    def go():
        lo.destroy()
        win.destroy()

    def clo():
        mb.showinfo('卑微','你都同意了,约会去嘛❤')
    lo = tk.Toplevel(win)
    lo.title('约会')
    lo.geometry('300x300+500+300')

    img = tk.PhotoImage(file='./2.png')
    the = tk.Label(lo, image=img)
    the.pack()
    tk.Button(lo, text='我们去约会吧', command=go).place(x=110, y=220)

    lo.protocol('WM_DELETE_WINDOW', clo)
    lo.mainloop()

点击同意后会再次出现一个界面,在这个界面里放上先要添加的东西,原理的主页面是一样的,这里图片导入的方式我用了两种,在主页面我是用的画布方式,将图片添加到画布上,在同意的子页面我是添加在了标签上,至于这两种方式有什么区别,感兴趣的同学可以去查一下相关的资料。

大致的功能写好了还有一些小功能没有实现,接下来在完善完善

点击关闭键关不掉的功能

def close():
    mb.showinfo('警告', '小姐姐别想逃')
    
    
win.protocol('WM_DELETE_WINDOW', close)

将界面的大小固定

win.resizable(False, False)

菜单栏

def do_job():
    do = tk.Toplevel(win)
    do.geometry('300x300+500+300')
    do.title('说明')
    tk.Label(do, text='不同意永远关不掉', font=('微软雅黑', '20')).pack()
    do.mainloop()


menubar = tk.Menu(win)
filemenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='帮助', menu=filemenu)
filemenu.add_command(label='说明', command=do_job)
win.config(menu=menubar)

完整代码如下

import tkinter as tk
import tkinter.messagebox as mb
from random import randint

win = tk.Tk()
win.title('表白')         # 窗口名称
win.geometry('800x500+350+150')     # 窗口大小及位置

canvas = tk.Canvas(win, width=600, height=300)
image_file = tk.PhotoImage(file='love.png')
image = canvas.create_image(450, 0, anchor='n', image=image_file)
canvas.pack(side='top')


def agree():
    def go():
        lo.destroy()
        win.destroy()

    def clo():
        mb.showinfo('卑微','你都同意了,约会去嘛❤')
    lo = tk.Toplevel(win)
    lo.title('约会')
    lo.geometry('300x300+500+300')

    img = tk.PhotoImage(file='./2.png')
    the = tk.Label(lo, image=img)
    the.pack()
    tk.Button(lo, text='我们去约会吧', command=go).place(x=110, y=220)

    lo.protocol('WM_DELETE_WINDOW', clo)
    lo.mainloop()


def refuse():
    x = randint(10, 600)
    y = randint(10, 400)
    bt2.configure(text=word[randint(0, len(word) - 1)])
    bt2.place(x=x, y=y)


def close():
    mb.showinfo('警告', '小姐姐别想逃')


def do_job():
    do = tk.Toplevel(win)
    do.geometry('300x300+500+300')
    do.title('说明')
    tk.Label(do, text='不同意永远关不掉', font=('微软雅黑', '20')).pack()
    do.mainloop()


def consider():
    mb.showinfo('别纠结了', '你完了,你妈让你嫁给我')
    mb.showinfo('别纠结了', '你爸也是这么说的')
    mb.showinfo('别纠结了', '你奶奶也让你嫁给我')
    mb.showinfo('别纠结了', '你哥哥也同意了,你全家都同意')
    mb.showinfo('别纠结了', '你闺蜜说嫁给我没错')
    mb.showinfo('别纠结了', '你爸说不同意就打你')
    mb.showinfo('别纠结了', '接受现实吧,我会对你好的')
    mb.showinfo('别纠结了', '你都是我的人了')


def a(eve):
    if a:
        x = randint(10, 600)
        y = randint(10, 400)
        bt2.configure(text=word[randint(0, len(word) - 1)])
        bt2.place(x=x, y=y)


word = [
    '我会对你好的', '你爸妈都同意了', '我有车有房', '家务我来做', '孩子我带', '在考虑一下吧', '孩子想生就生', '我妈会游泳', '你最好看',
    '给你买包', '钱都给你', '都给你买', '我秒回消息', '不存私房钱'
]

tk.Label(win, text='小姐姐,\n观察你很久了!\n做我女朋友好不好?', font=('微软雅黑', '20')).place(x=100, y=100)
tk.Button(win, text='同意', command=agree, width=13, height=2).place(x=150, y=350)
tk.Button(win, text='考虑考虑', command=consider, width=13, height=2).place(x=350, y=350)
bt2 = tk.Button(win, text='拒绝', command=refuse, width=13, height=2)
bt2.place(x=550, y=350)

bt2.bind('<Motion>', a)         # 注释后拒绝按钮变成点击触发

menubar = tk.Menu(win)
filemenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='帮助', menu=filemenu)
filemenu.add_command(label='说明', command=do_job)
win.config(menu=menubar)

win.protocol('WM_DELETE_WINDOW', close)
win.resizable(False, False)
win.mainloop()

代码写好了,该怎么发给女神呢,女神电脑上又没有python环境,这里可以用pyinstaller 来将代码打包成exe文件 安装 pip install pyinstaller 安装后在你想保存的文件夹打开cmd命令板

输入pyinstaller -F 代码路径 -w

这里的w是小写的

-F 表示生成单个可执行文件

-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!

-i 表示可执行文件的图标 想要添加图标可以在后面路径,后缀名为.ico

打包成功是这样的

在这里插入图片描述

我们的可执行文件解放在dist文件夹下,现在你直接运行是会报错的,我们要图片放到exe文件的同级文件夹下就行了,注意图片名一定要和你写代码时的图片名相同,弄好之后就可以打包发给你女神了

在这里插入图片描述

不说了,天台挺凉快的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值