爱情树代码python_送男朋友礼物送什么比较有意义?

用Python给男朋友写了个小程序,需要帐号和密码才能登陆,里面是几道恋爱回忆题和我想对他说的话。虽说是很多人玩剩下的,但对我这个新手来说,已经用尽毕生绝学了!!!

⬆️打开后的界面长这样,标题是《欢迎来到沙雕世界》,因为我俩经常互称对方沙雕。中间的图片是我画的他,嗯,感觉和标题非常地相称。

我把帐号和密码的提示放到了蚂蚁森林爱情树的留言板里,这样他浇水的时候可以看到(结果并没有,还是我又提示了一遍 )

⬆️上图已经输完了帐号密码。中间的沙雕照其实是个按钮,点击一下就可以进入了(那个猪还问我按回车怎么动不了)。注意鼠标移到那里,光标会变成爱心形状的嗷,这是设计过程中的一个小小彩蛋( ´▽`)

⬆️进入之后的样子,一张少女心里掺着点沙雕气质的告示,点粉色的按钮就可以进入下一个画面。

请忽略我的彩虹屁......

⬆️之后就是这样的题目了,一般答案用脚趾想想就能猜到,都是我们两个的回忆。只不过怎么输入需要斟酌一下,毕竟要一字不差才行,程序可是很严格的,哈哈哈哈当命题老师的感觉有点好。

再贴几个题目上来一直想种胡杨

吃了好多雪胖子

因为时间超级紧,一共只出了7道题,出题质量也不是那么的高,害,我快抓破脑袋了!!!

话我就码掉啦

⬆️答完所有题,最后就是我想对他说的话,点击按钮可以重新回到输入帐号密码的地方,真是完美的闭环

男朋友说这个很像解谜游戏,整个过程就是他一边向我求助,一边试答案,最后通关了还是很开心的,这是“属于我们两个的秘密”~~~

————————————————分割线

严格意义上来说,这是我写出的第一个Python程序,之前写过的,跳出来都是黑乎乎的控制台,没有这样可爱的界面。所以还是很有成就感的,特别是它还发给了喜欢的人!

GUI工具用的是Python内置的tkinter,打包则是pyinstaller,用了最简单的方式(-F -w),由于技术有限(琢磨了好多教程帖还是不行,遂放弃了先),没有把图片资源打包进去,而是直接把打包完成的exe文件和图片放到了一个文件夹里,这样对方也可以直接打开。

之前学过廖大的Python教程(学到了一半),又看了《Python教程:从入门到实践》的基础部分,有一点基础在的。在设计这个程序的时候,则参考了《Python GUI设计:tkinter菜鸟教程》和一些大神写的技术教程。

————————————————分割线

感谢大家喜欢!我把代码修改成通用版本,贴在下面,有需要的话请自取~

from tkinter import *

class basedesk():

def __init__(self,master):

self.root=master

self.root.config()

self.root.title("改成你程序的名字")

self.root.geometry("400x350")

initface(self.root)

class initface():

def __init__(self,master):

self.master=master

self.master.config()

self.initface=Frame(self.master)

self.initface.pack()

self.photo=PhotoImage(file='改成你所加图片的文件名,xxx.gif')#注意这个照片要gif格式,和py文件同一文件夹

logo=Button(self.initface,image=self.photo,

cursor='heart',command=self.change)

label0=Label(self.initface,text='改成界面上方的一行字',

bg='#fae3d9',fg='#1e2022',

font='TIMES 15 bold',

cursor='star')

label1=Label(self.initface,text='账号',

bg='#fae3d9',fg='#1e2022',

width=4,

font='宋体 13 bold',

cursor='star')

label2=Label(self.initface,text='密码',

bg='#fae3d9',fg='#1e2022',

width=4,

font='宋体 13 bold',

cursor='star')

self.x=StringVar()

message1=Entry(self.initface,textvariable=self.x,width=31)

self.y=StringVar()

message2=Entry(self.initface,textvariable=self.y,width=31,show='*')

label0.grid(row=0,column=0,columnspan=2,padx=5,pady=10)

logo.grid(row=1,column=0,columnspan=2,padx=10,pady=10)

label1.grid(row=2,column=0,pady=10)

message1.grid(row=2,column=1,pady=10)

label2.grid(row=3,column=0,pady=0)

message2.grid(row=3,column=1,pady=0)

def change(self):

if self.x.get()=='改成你所设置的账号' and self.y.get()=='改成你所设置的密码':

self.initface.destroy()

face0(self.master)

class face0():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face0=Frame(self.master)

self.face0.pack()

label=Label(self.face0,text='改成\n\n你要做的告示\n\n',#\n是用来给你的话换行的,相当于回车键的作用

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face0,text='改成设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

label.grid(row=0,column=0,padx=20,pady=20)

btn.grid(row=1,column=0,pady=10)

def back(self):

self.face0.destroy()

face1(self.master)

class face1():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face1=Frame(self.master)

self.face1.pack()

label3=Label(self.face1,text='改成\n\n问题1\n\n',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face1,text='改成你要设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

self.z=StringVar()

message3=Entry(self.face1,textvariable=self.z,width=20)

label3.grid(row=0,column=0,columnspan=2,padx=10,pady=30)

message3.grid(row=1,column=0,padx=10,pady=10)

btn.grid(row=1,column=1,padx=10,pady=10)

def back(self):

if self.z.get()=='改成问题1的答案':

self.face1.destroy()

face2(self.master)

class face2():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face2=Frame(self.master)

self.face2.pack()

label=Label(self.face2,text='改成\n\n问题2\n\n',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face2,text='改成设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

self.a=StringVar()

message3=Entry(self.face2,textvariable=self.a,width=20)

label.grid(row=0,column=0,columnspan=2,padx=10,pady=30)

message3.grid(row=1,column=0,padx=10,pady=10)

btn.grid(row=1,column=1,padx=10,pady=10)

def back(self):

if self.a.get()=='改成问题2的答案':

self.face2.destroy()

face3(self.master)

class face3():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face3=Frame(self.master)

self.face3.pack()

label=Label(self.face3,text='改成\n\n问题3\n\n',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face3,text='改成设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

self.a=StringVar()

message3=Entry(self.face3,textvariable=self.a,width=20)

label.grid(row=0,column=0,columnspan=2,padx=10,pady=30)

message3.grid(row=1,column=0,padx=10,pady=10)

btn.grid(row=1,column=1,padx=10,pady=10)

def back(self):

if self.a.get()=='改成问题3的答案':

self.face3.destroy()

face4(self.master)

class face4():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face4=Frame(self.master)

self.face4.pack()

label=Label(self.face4,text=

'改成\n\n问题4\n\n',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face4,text='改成设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

self.a=StringVar()

message3=Entry(self.face4,textvariable=self.a,width=20)

label.grid(row=0,column=0,columnspan=2,padx=10,pady=30)

message3.grid(row=1,column=0,padx=10,pady=10)

btn.grid(row=1,column=1,padx=10,pady=10)

def back(self):

if self.a.get()=='改成问题4的答案':

self.face4.destroy()

face5(self.master)

class face5():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face5=Frame(self.master)

self.face5.pack()

label=Label(self.face5,text=

'改成\n\n问题5\n\n',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face5,text='改成设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

self.a=StringVar()

message3=Entry(self.face5,textvariable=self.a,width=20)

label.grid(row=0,column=0,columnspan=2,padx=10,pady=30)

message3.grid(row=1,column=0,padx=10,pady=10)

btn.grid(row=1,column=1,padx=10,pady=10)

def back(self):

if self.a.get()=='改成问题5的答案':

self.face5.destroy()

face6(self.master)

class face6():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face6=Frame(self.master)

self.face6.pack()

label=Label(self.face6,text=

'改成\n\n问题6\n\n',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face6,text='改成设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

self.a=StringVar()

message3=Entry(self.face6,textvariable=self.a,width=20)

label.grid(row=0,column=0,columnspan=2,padx=10,pady=30)

message3.grid(row=1,column=0,padx=10,pady=10)

btn.grid(row=1,column=1,padx=10,pady=10)

def back(self):

if self.a.get()=='改成问题6的答案':

self.face6.destroy()

face7(self.master)

class face7():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face7=Frame(self.master)

self.face7.pack()

label=Label(self.face7,text=

'改成\n\n问题7\n\n',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=300,justify='left',

padx=20,pady=20)

btn=Button(self.face7,text='改成设置的按钮名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

self.a=StringVar()

message3=Entry(self.face7,textvariable=self.a,width=20)

label.grid(row=0,column=0,columnspan=2,padx=10,pady=30)

message3.grid(row=1,column=0,padx=10,pady=10)

btn.grid(row=1,column=1,padx=10,pady=10)

def back(self):

if self.a.get()=='改成问题7的答案':

self.face7.destroy()

face8(self.master)

class face8():

def __init__(self,master):

self.master=master

self.master.config(bg='#f0f0f0')

self.face8=Frame(self.master)

self.face8.pack()

label=Label(self.face8,text='改成最后你想说的话',

bg='#bbded6',fg='#f8f3d4',

font='宋体 13 bold',cursor='star',

wraplength=350,justify='left',

padx=20,pady=20)

btn=Button(self.face8,text='改成返回按钮的名字',command=self.back,

bg="#ffb6b9",cursor='heart',

font='宋体 13 bold',

padx=3,pady=3)

label.grid(row=0,column=0,padx=10,pady=20)

btn.grid(row=1,column=0,pady=10)

def back(self):

self.face8.destroy()

initface(self.master)

if __name__=='__main__':

root=Tk()

basedesk(root)

root.mainloop()

备注:“改成”两字开头的句子,引号里面的语句都是可以修改的,可以按照提示来。#后面的语句也是提示,不会影响代码的使用。

————————————————8.16更新

整理了一些大家的问题贴到这里

Q1:求分享代码

A1:朋友们我的代码就放在上面呀,灰灰的区域!

Q2:是python小白怎么办

A2:可以一步一步来,先下载Python,网上有很多教程帖。然后在编辑器里粘贴上面的代码,再按照备注进行修改。

Q3:除了下python还要准备什么东西

A3:账号和密码,7个问题和答案,还有一张gif格式的图片。另外我试过python3.7和3.8版本,都是可以成功运行的。

————————————————11.25更新

Q4:是在哪里进行编辑

我用的python自带的编辑器(当然也可以用pycharm等),需要在原页面的基础上新建一个空白窗口,把代码粘贴到上面,按照备注修改后保存为py文件。

Q5:最最最常见的一个报错“couldn't recognize data in image file 'xxx.gif'”

这是程序找不到gif文件啦,需要注意:

①py文件和gif图片是否在一个文件夹,没有的话要放在一起

②图片不能通过修改后缀的方式改成gif,最好原本就是gif格式,或者试试用ps进行格式转换

③图片的命名最好以字母或数字为主

Q6:对方电脑没下python怎么打开

用pyinstaller打包为exe程序,网上有相关的教程可以参考,输入关键词pyinstaller即可找到

————————————————

然后,圣诞节还有新年快到啦,

再跟大家分享一些可以搭配这个小程序送出去的礼物,兼具浪漫和实用:

1.芙倍丽鼻毛修剪器

我个人感觉,这是一份让对方意想不到,但收到后能感受到你贴心度的礼物,因为帮他注意到了很细节的地方。

相比于剪刀,修剪器更加专业也更安全,因为它把刀片设计在刀头的内侧,修剪的时候刀片不会触碰到皮肤,非常安全。而且它圆拱形刀头设计特别贴合鼻腔结构,使用起来无障碍又利落,短短10s就可以完成日常的修剪。像一支笔,外出旅行也方便携带

这款外观是男孩子会喜欢的高级磨砂质感,而且不管是使用还是携带都很方便,之后也容易让他更加注意仪容仪表。

2.春风十里『苦尽』香水

自从知道春风十里这个香水品牌后,我已经在两个回答里安利过它了。一个新晋国货品牌,香如其名,充满诗意的感觉。

这瓶乌木沉香叫做『苦尽』,茶香带点淡淡的烟草味,入鼻会有一丝苦味,但接着是微甜,带给人很安心的感觉。

有苦尽,有甘来,所以我觉得很适合送给正在考研、等offer的男朋友,祝他心想事成,早日上岸!价格对学生党也很友好。

『既然已经苦尽,那么人生中的甜也不会太远。』可以附上这句话一起送给他。

ps:之前在“男生一般喜欢什么礼物”这个问题下,用python爬取过400+条回答,然后用jieba库作了一个词频统计分析,然后发现,香水是提及次数第三多的一样东西,详情可以点击下面的链接↓↓↓男生一般会喜欢什么礼物?​www.zhihu.com

所以,如果觉得男朋友比较精致的话,放心大胆地送。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值