作为万能的python来说,如果不在今天搞点事情,恐怕就白学了,在知乎上看到过一篇文章就是用python来实现一个表白程序。看完之后,小编就惊呆了,原来用python可以这么简单的实现这个程序。
但网上的代码功能过于简单,小编在看完别人的代码逻辑之后,通过查看相关库的API,自己写了一个表白程序。话不多说,直接上效果图:
这里,要向大家说明一下本次所用的python的Tkinter库。Tkiniter库是Python标准的GUI(图形用户界面)库。使用Tkinter可以非常快速的创建一个GUI应用程序。大白也是用这个Tkinter库实现的表白小程序。由于是Python的一个标准库,安装起来也是非常的简单。
pip install tkinter
安装好Tkinter库之后就可以开始“表白之旅”了。
一开始当然是先要引入刚安装好的Tkinter库。引入方式很简单。
from tkinter import *
from tkinter import messagebox
引入之后就可以开始写代码了。首先使用Tkinter库需要先创建一个窗口对象,并且设置好窗口的尺寸大小以及位置。
#创建一个窗口对象
window = Tk()
#设置文本标题
window.title('数据大白')
#设置窗口大小
window.geometry('540x300')
# 窗口位置
window.geometry('+500+240')
在Tkinter中,使用Label组件来显示标签显示相同样式的一行或多行文本,或位图或图像。使用Button组件来创建选项按钮。在大白的表白程序中,所有的文本内容就是通过label组件设置的。Label组件和Button组件的第一个参数必须传入根窗口的对象。后面的参数就可以根据组件的API自己选择了。
标签文本设置:
#标签设置
label=Label(window,text='美美哒的小姐姐:\n\n 我已经注意你很久了...\n 你的辣条是我送的...\n' +' 你的零食也是我买的...\n 做我女朋友好不好?',
font=('华文楷体',15),justify=LEFT)
label.grid(row=2,column=0,columnspan=1)
#插入图片
photo=PhotoImage(file=r'C:\Users\asua\Desktop\python\01.gif')
imagelabel=Label(window,image=photo,justify=RIGHT)
# 设置网格线
imagelabel.grid(row=2,column=2,sticky=E)
选项按钮设置
#底部按钮
#同意按钮
# activebackground当鼠标点击按钮产生的背景颜色
aggreebtn=Button(window,activebackground='#FF8C69',font=('华文行楷',15),text='我也喜欢你',
justify=LEFT,width=10,height=2,command=GirlLove)
aggreebtn.grid(row=4,column=0,sticky=SW)
#考虑按钮
oaggreebtn=Button(window,activebackground='#FF83FA',font=('华文行楷',15),text='考虑一下',
justify=CENTER,width=10,height=2,command=girlthink)
oaggreebtn.grid(row=4,column=1,rowspan=1,sticky=S)
#拒绝按钮
reaggreebtn=Button(window,activebackground='#FFC1C1',font=('华文行楷',15),text='别来烦我',
justify=RIGHT,width=10,height=2,command=girlbother)
reaggreebtn.grid(row=4,column=2,sticky=SE)
通过上面的代码就创建好了根窗口,表白程序差不多完成一半了。是的,真的就是这么简单。这或许就是python的神奇优雅之处吧。接着需要做的就是根据用户点击不同按钮触发的事件来定义几个方法函数进行处理就可以了。这里需要提醒一下,使用Button的command属性就可以直接调用方法函数了。由于代码过长(其实很多逻辑都是一样的),这里是展示部分代码:
如果小姐姐点击同意按钮:
#如果小姐姐同意
# pack——几何管理器,将子控件打包到父组件中,并优化布局
def GirlLove():
global n
n+=1
#创建顶级窗口,包含在window中
girllove=Toplevel(window)
girllove.title('嘻嘻,我就知道你会同意的')
#设置窗口大小 girllove.geometry('250x120')
# 窗口位置 girllove.geometry('+400+240')
if n==1:
#设置标签
lovelabel1=Label(girllove,text='嘿嘿,喜欢了你这么久。\n终于要和你在一起了。\n真开心', font=('华文行楷',15),justify=CENTER,padx=10) lovelabel1.pack()
#新建一个按钮,用于关闭窗口
closebtn1=Button(girllove,text='确定',command=girllove.destroy,width=10,height=2)
closebtn1.pack()
girllove.protocol('WM_DELETE_WINDOW', closeLove)
如果小姐姐想要考虑一下:
#如果小姐姐考虑一下
def girlthink():
global n
n+=1
#创建顶级窗口,包含在window中
girlthink=Toplevel(window)
girlthink.title('嘻嘻,我就知道你会同意的')
#设置窗口大小
girlthink.geometry('250x100')
# 窗口位置 girlthink.geometry('+250+240')
#设置标签
if n==1:
thinklabel=Label(girlthink,text='车买过了',font=('华文行楷',15),justify=CENTER) thinklabel.pack() thinkbtn=Button(girlthink,text='知道了',width=10,height=2,command=girlthink.destroy) thinkbtn.pack() girlthink.protocol('WM_DELETE_WINDOW', girlthink4)
if n==2:
thinklabel=Label(girlthink,text='房子也买了',font=('华文行楷',15),justify=CENTER) thinklabel.pack() thinkbtn=Button(girlthink,text='知道了',width=10,height=2,command=girlthink.destroy) thinkbtn.pack() girlthink.protocol('WM_DELETE_WINDOW', girlthink4)
if n==3:
thinklabel=Label(girlthink,text='工作卡给你',font=('华文行楷',15),justify=CENTER) thinklabel.pack() thinkbtn=Button(girlthink,text='知道了',width=10,height=2,command=girlthink.destroy) thinkbtn.pack() girlthink.protocol('WM_DELETE_WINDOW', girlthink4)
if n==4:
thinklabel=Label(girlthink,text='保大不保小',font=('华文行楷',15),justify=CENTER) thinklabel.pack() thinkbtn=Button(girlthink,text='知道了',width=10,height=2,command=girlthink.destroy) thinkbtn.pack() girlthink.protocol('WM_DELETE_WINDOW', girlthink4)
为了让程序完整,小编考虑到如果小姐姐在除了点击同意按钮之外的任何地方关闭窗口,就要阻止小姐姐关闭:
# 如果要关闭根窗口
def closeWindow():
messagebox.showinfo(message="再考虑考虑呗")
#如果小姐姐在考虑的前4个选项关闭窗口
def girlthink4(): messagebox.showinfo(message="小姐姐你看完嘛")
#如果小姐姐在考虑的后四个选项关闭窗口def girlthink8(): messagebox.showinfo(message="后面还有惊喜哦")
#关闭喜欢窗口
def closeLove(): messagebox.showinfo(message="答应我就可以关闭窗口哦")
这个表白程序的逻辑很简单。这里小编也给总结一下:首先调用Tk()类来创建一个根窗口,并使用Label组件来编辑文本内容和使用Button组件来实现按钮。然后根据用户点击不同的按钮来触发不同的事件操作(定义的方法函数)就可以实现一个很神奇的表白程序了。
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。