Python表白程序实现:GUI界面与交互逻辑详解
本文详细介绍如何使用Python的Tkinter库制作一个交互式表白程序。通过创建GUI窗口、定义点击触发函数及弹窗逻辑,实现“喜欢”与“不喜欢”按钮的交互反馈。文章提供完整代码示例,包括窗口布局、事件绑定及消息提示功能,帮助开发者快速掌握Python GUI编程基础。
Python表白程序实现原理
使用Python编写表白程序的核心在于利用图形用户界面(GUI)库进行交互设计。
首先,需要构建一个基础的GUI窗口,作为程序运行的载体,并负责调用相关的界面组件与逻辑代码。
其次,编写点击触发函数,定义用户交互时的具体行为,例如弹出提示窗口或执行特定逻辑,从而实现完整的表白程序功能。
具体的实现代码参考如下示例。
核心代码示例:交互逻辑实现
from tkinter import *
from tkinter import messagebox
def closeWindow():
messagebox.showinfo(title="警告",message="不许关闭,好好回答")
# messagebox.showerror(title="警告",message="不许关闭,好好回答")
return
# 点击喜欢触发的方法
def Love():
# 顶级窗口
love = Toplevel(window)
love.geometry("300x100+520+260")
love.title("好巧,我也是")
label = Label(love,text = "好巧,我也是",font = ("微软雅黑",20))
label.pack()
btn = Button(love,text="确定",width=10,height=2,command=closeAllWindow)
btn.pack()
love.protocol("WM_DELETE_WINDOW",closeLove)
def closeLove():
return
# 关闭所有的窗口
def closeAllWindow():
# destroy 销毁
window.destroy()
def noLove():
no_love = Toplevel(window)
no_love.geometry("300x100+520+260")
no_love.title("再考虑考虑")
label = Label(no_love,text="再考虑考虑呗",font=("微软雅黑",25))
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()
# 创建父级窗口
window = Tk() #Tk 是一个类
# 窗口标题
window.title("你喜欢我吗?")
# 窗口大小
window.geometry('380x420')
# 窗口位置 geometry:几何
window.geometry('+500+240')
# protocol() 用户关闭窗口触发的事件
window.protocol("WM_DELETE_WINDOW",closeWindow)
# 标签控件
label = Label(window,text="hey,小姐姐",font=("微软雅黑",15),fg='red')
# 定位 网格式布局 pack也可以
label.grid(row = 0,column = 0,sticky = W)
label1 = Label(window,text="喜欢我吗?",font=("微软雅黑",30))
# sticky 对齐方式 E W S N 东西南北
label1.grid(row = 1,column = 1,sticky = E)
# 显示图片
photo = PhotoImage(file = "./cc.png")
imageLable = Label(window,image = photo)
# columnspan 组件所跨越的列数
imageLable.grid(row = 2, columnspan = 2)
# 按钮控件
# command 按钮点击触发的事件
btn = Button(window,text="喜欢",width=15,height=2,command=Love)
btn.grid(row = 3,column = 0, sticky = W)
btn1 = Button(window,text="不喜欢",command=noLove)
btn1.grid(row = 3,column = 1, sticky = E)
# 显示窗口,也叫消息循环
window.mainloop()
此外,还可以对程序进行扩展,例如打包为独立可执行文件以便分享。
扩展:程序打包与完整代码解析
复制# 打包操作
# 安装pyinstaller
# cmd输入 pip install pyinstaller
# shift+右击文件夹 点击在此处打开命令窗口
# pyinstaller -F -w love.py //打包程序
# 引用tkinter工具包
from tkinter import * #__all__=[a,b]
#from tkinter import messagebox
# 定义关闭窗口提示
def closeWindow():
messagebox.showinfo(title="警告",message ="滚回去,必须选一个")
return
# 定义喜欢按钮的提示
def Love():
love = Toplevel(window)
love.geometry("300x100+250+260")
love.title("我也喜欢你")
label = Label(love, text = "我也喜欢你!",font = ("微软雅黑",20))
label.pack()
btn = Button(love,text = "好呀",width = 10,height = 2,command=closeallwindow)
btn.pack()
love.protocol("WM_DELETE_WINDOW", closelove)
def closelove():
return
# 关闭所有窗口
def closeallwindow():
window.destroy()
# 定义不喜欢按钮的提示
def noLove():
no_love = Toplevel(window)
no_love.geometry("300x100+520+260")
no_love.title("重新选")
label = Label(no_love,text="乖乖回去重新选!",font = ("微软雅黑",25))
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():
#messagebox.showinfo("放弃吧回去重选- -")
#return
noLove()
# 创建窗口
window = Tk()
# 窗口标题
window.title("喜欢我吗?")
# 窗口大小
window.geometry("380x420+500+240")
# love.title("哈哈")
btn=Button(text="确定")
# 窗口位置
# window.geometry("+500+240")
window.protocol("WM_DELETE_WINDOW",closeWindow )
#标签控件
label = Label(window,text = "hey,小姐姐",font = ("微软雅黑",15),fg = "red")
label.grid(row = 0, column = 0 )
label = Label(window,text = "喜欢我吗?",font = ("微软雅黑",30))
label.grid(row = 1, column = 1,sticky = E)
# 插入图片
photo = PhotoImage(file = "./123.png")
imageLable = Label(window,image = photo)
imageLable.grid(row = 2,columnspan = 2)
# 喜欢按钮插件
btn = Button(window,text="喜欢",width=15,height=2,command=Love)
btn.grid(row=3,column=0,sticky= W)
# 不喜欢按钮插件
btn = Button(window,text="不喜欢" ,command=noLove)
btn.grid(row=3,column=1,sticky= E)
# 显示窗口 消息循环
window.mainloop()
至此,关于如何使用Python编写表白程序的教程介绍完毕。如需了解更多相关Python编程技巧,建议查阅本站往期文章或继续浏览后续内容,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













