Python经典游戏04:用tkinter给老板写一封拒绝不了的辞职信

★★★★★博文原创不易,我的博文不需要打赏,也不需要知识付费,可以白嫖学习编程小技巧。**如果使用代码的过程,有疑问的地方,欢迎大家指正留言交流。**喜欢的老铁可以多多帮忙点赞,小红牛在此表示感谢。★★★★★

python 复制代码
#我的Python教程
#官方微信公众号:wdPython

1.使用以下代码需要准备一个素材图片资源,如下图,你可以换成别的。
只有点击同意程序才能退出去,否则关不掉,这是网上很火的一个小游戏,仅供大家学习实用。运用到以下知识点

#1. tkinter.destroy() 是一个用于销毁 Tkinter GUI 窗口的方法。当调用该方法时,窗口及其所有子元素将被逐步删除,并释放系统资源。

#2. tkinter.Toplevel() 是 Tkinter 库中的一个类,用于创建新的顶级窗口(即弹出窗口)。这些窗口独立于主窗口,并且可以包含自己的控件和子窗口。

#3.tkinter.protocol("WM_DELETE_WINDOW", closeWindow) 是一个在 Tkinter 库中用于注册窗口关闭事件的语句。具体来说,WM_DELETE_WINDOW 是一个标准的窗口系统消息,通常用于处理用户点击窗口的关闭按钮(叉号或 X)时的行为。当用户尝试关闭窗口时,系统将发送该消息给应用程序,以便应用程序有机会进行必要的清理和退出操作。

tkinter.protocol 函数用于注册一个处理函数,当接收到指定的消息时将被调用。在这个例子中,"WM_DELETE_WINDOW" 是要注册的消息类型,而 closeWindow 是与该消息关联的处理函数。

closeWindow 是一个自定义的函数,用于处理窗口关闭事件。通常,它会执行一些清理工作,比如保存数据、释放资源等,然后调用 destroy 方法来销毁窗口。

通过将 "WM_DELETE_WINDOW" 与 closeWindow 关联,当用户尝试关闭窗口时,Tkinter 将自动调用 closeWindow 函数来处理关闭事件,确保应用程序能够正确地处理窗口关闭操作。

软件运行时候的效果

python 复制代码
import random
import tkinter as tk
from tkinter import messagebox
from PIL import Image, ImageTk

def closeWindow():
    messagebox.showinfo(title="同意提示", message="只有点同意才能关掉窗口啊~")
    return

def agree():
    #创建新的窗口
    top = tk.Toplevel(root)
    top.geometry("500x150+{}+{}".format(int(( width) / 2),int((height) / 2)))
    top.title("辞职信")
    label = tk.Label(top, text="爱卿,终于同意来了?", font=("华文行楷", 20))
    label.pack()
    btn = tk.Button(top, text="我同意", width=6, height=1,command=root.destroy)
    btn.pack()

def disagree():
    B2.place_forget()
    B2.place(x=random.randint(150, 500), y=random.randint(150, 500))

if __name__ == '__main__':
    
    root = tk.Tk()
    root.title('这是朕的辞职信')
    width = 600
    height = 650
    root.resizable(width=False, height=True)
    root.geometry('600x600')
    root.protocol("WM_DELETE_WINDOW", closeWindow)
    #显示图片
    load = Image.open('辞职信.png').resize((300, 310))
    render = ImageTk.PhotoImage(load)
    L2 = tk.Label(root, image=render)
    L2.place(x=150, y=100)
    B1 = tk.Button(root, text='同意', command=agree)
    B1.place(x=155, y=420)
    B2 = tk.Button(root, text='不同意', command=disagree)
    B2.place(x=400, y=420)
    root.mainloop()
相关推荐
benchmark_cc18 小时前
用 QuantDash 读取单只股票五档盘口:抽样、缺失值检查与复现记录
python·数据分析·pandas·量化交易·股票数据·quantdash
曲径海盗18 小时前
【Python 学习第 55 天】列表基础
python·学习笔记·编程入门
专注仿真19 小时前
知识问答模型用到的算法集详解及代码实例
python·算法·代码·大模型训练·控制算法
jyOverQ19 小时前
我写了一个 CSDN Markdown 图片助手:告别本地图片逐张上传
python·工具·csdn
刘马想放假1 天前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
2601_967987371 天前
python判断变量名不要调用任何函数实现
python·函数·语法·判断·变量名
卷无止境1 天前
SALib敏感性分析的python库学习笔记
后端·python
duansamve1 天前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
特立独行的猫A1 天前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python
特立独行的猫A1 天前
cj-tauri vs Rust/Tauri 同款播放器实测:编译 21 秒 vs 11 分钟,磁盘 12 MB vs 1.2 GB
java·后端·python