受疫情影响,不少情侣即便相隔一个小区也没法见面,快递也迟迟未启动。在这情人节到来之际,宅在家中不妨本身动手作一个小软件来看成情人节礼物。canvas
我作了这样一个“时光回忆录”,主要分为如下四部分,登陆界面的设计,倒很多天模块,照片模块以及甜言蜜语模块。dom
由于照片,情话这种较为隐私的东西,我决定设计必定的登陆门槛。可是与此同时,我给出了love、you这两个菜单栏做为帐号密码的提示,经过entry控件获得输入的帐号密码,而且在点击login按钮后,进入到主界面之中。oop
def set_win(self):
self.win.title("Login")
self.win.geometry("450x350")
menubar=tkinter.Menu(self.win)
self.win.config(menu=menubar)
menu1=tkinter.Menu(menubar,tearoff=False)
menu2=tkinter.Menu(menubar,tearoff=False)
for item in self.menu_list[:2]:
if item=='account_prompt1':
menu1.add_separator()
menu1.add_command(label=item,command=self.get_account1)
else:
menu1.add_command(label=item,command=self.get_account2)
for item in self.menu_list[2:]:
if item=='password_prompt1':
menu2.add_separator()
menu2.add_command(label=item,command=self.get_password1)
else:
menu2.add_command(label=item,command=self.get_password2)
menubar.add_cascade(label='Love',menu=menu1)
menubar.add_cascade(label='You',menu=menu2)
canvas=tkinter.Canvas(self.win,height=270,width=450)
imagefile=tkinter.PhotoImage(file='a.gif')
canvas.create_image(0,0,anchor='nw',image=imagefile)
canvas.pack()
account=tkinter.Variable()
password=tkinter.Variable()
entry1=tkinter.Entry(self.win,textvariable=account)
entry1.place(x=160,y=280)
entry2=tkinter.Entry(self.win,textvariable=password,show='*')
entry2.place(x=160,y=320)
tkinter.Label(self.win,text='Account').place(x=100,y=280)
tkinter.Label(self.win,text='Password').place(x=100,y=320)
login_button=tkinter.Button(self.win, text="Login", command=lambda :self.login(entry1,entry2), width=5, height=3)
login_button.place(x=320,y=280)
self.win.mainloop()复制代码
这一模块主要是实现照片的查看,经过向前向后两个按钮控制照片的翻阅,能够将两人的合照按照时间顺序展开。须要对照片进行预处理,调整到适配的大小。spa
def pic_process(self,path):
img=Image.open(path)
img=img.resize((300,250))
photo=ImageTk.PhotoImage(img)
imgLabel=tkinter.Label(self.win2,image=photo)
imgLabel.place(x=150,y=0)
imgLabel.after()
def open_pic(self):
self.i=0
self.get_chp()
self.pic_process(self.path[self.i])
def prev_pic(self):
self.get_chp()
self.i-=1
self.pic_process(self.path[self.i])
def next_pic(self):
if self.i<40:
self.get_chp()
self.i+=1
self.pic_process(self.path[self.i])
else:
tkinter.messagebox.showinfo(message='最后一张了喔~',title="Info")复制代码
这一模块主要是随机选择一条彩虹屁显示在文本框内,并伴随这照片的切换,进行彩虹屁的切换,固然针对每一张照片写下照片的背景,以及你的蜜语效果更佳!命令行
def get_chp(self):
chp=random.choice(self.CHP)
text=tkinter.Text(self.win2,width=10,height=5)
text.insert(tkinter.INSERT,chp)
text.place(x=60,y=200) 复制代码
这一个模块主要作了一个记念日的计算,距离比较重要的日子,例如生日,结婚记念日等的一个日期倒计时。设计
为了使得对方可以在没有相关环境的状况下运行,咱们须要将此程序进行打包处理,这里利用pyinstaller模块能够轻松作到。3d
pyinstaller -F -w -i xxx.ico xxxxx.py复制代码
其中添加-w参数能够取消启动时的命令行显示,xxx.ico则为exe文件的图标。code
至此一份有心的情人节小礼物就制做完成啦,祝你们情人节快乐~cdn