Python中基于Tkinter写一封拒绝不了的辞职信(第27节)


在快节奏、高压力的工作环境中,每天都会有很多人想辞职。当我们决定离开某个公司去另一家公司时,需要填写辞职信,那么,如何写好辞职信才能让领导快速同意呢?本节教程将介绍如何利用Python的Tkinter标准库给老板写一封拒绝不了的辞职信。

1、辞职信介绍

本程序主要利用Python的Tkinter标准库创建一个简单的GUI(图形用户界面)辞职信界面,在辞职信界面创建标签和按钮等交互式组件,还融入了random随机库,恶搞“辞职信”。在主程序页面,点击“不同意”是不可能的,让老板分分钟同意。老板无论是点关闭还是点“不同意”按钮,都无法关闭窗口,最后只能无奈点击“同意”才能关闭窗口。

辞职信界面的主要功能包括:同意、不同意、关闭窗口。

同意:点击同意后显示新页面,提示“终于同意了,谢谢批准!”,再点击新页面上的“退出”按钮,才可关闭整个窗口。

不同意:鼠标点击“不同意”按钮,“不同意”按钮会随机移动,永远无法点击成功。

关闭窗口:点击“X”号或点击“退出”按钮关闭窗口,会弹出“此路不通,请先同意”提示框。

2、辞职信界面演示

Python中基于Tkinter写一封拒绝不了的辞职信

Python中基于Tkinter写一封拒绝不了的辞职信

3、辞职信完整代码如下所示:

动手练一练:

import tkinter as tk
from tkinter import messagebox
import random, webbrowser

# 定义退出时的处理函数
def quit_show():
    # 弹出提示消息框
    messagebox.showwarning(title='提示', message='此路不通,请先同意')

# 关于程序页面
def app_about():
    about = tk.Tk()
    about.title('关于程序')

    # 设置窗口居中
    window_width = 750
    window_height = 400
    screen_width = about.winfo_screenwidth()
    screen_height = about.winfo_screenheight()
    x = (screen_width - window_width) / 2
    y = (screen_height - window_height) / 2
    about.geometry('%dx%d+%d+%d' % (window_width, window_height, x, y))
    about.resizable(width=False, height=False)

    about_frame = tk.Frame(about, width=750, height=400)
    about_frame.pack()
    tk.Label(about_frame, text='辞职信', font=("宋体", 14)).place(x=340, y=20)
    tk.Label(about_frame, text='使用编程语言:Python', font=("宋体", 12)).place(x=50, y=90)
    tk.Label(about_frame, text='窗口介绍:无论是点关闭还是点不同意,都无法关闭窗口', font=("宋体", 12)).place(x=50, y=150)
    tk.Label(about_frame, text='同意:点击同意后显示新页面,再点击新页面上的“退出”按钮,才可关闭整个窗口', font=("宋体", 12)).place(x=50, y=210)
    tk.Label(about_frame, text='不同意:鼠标点击“不同意”按钮,“不同意”按钮会随机移动,永远无法点击成功', font=("宋体", 12)).place(x=50, y=270)
    tk.Label(about_frame, text='关闭窗口:点击“X”号或点击“退出”按钮关闭窗口,会弹出“此路不通,请先同意”提示框', font=("宋体", 12)).place(x=50, y=330)
    about.mainloop()

# 程序讲解页面
def show_help():
    webbrowser.open("https://www.pyhint.com/article/160.html")

# 创建窗口对象
app = tk.Tk()

# 设置窗口居中
window_width = 500
window_height = 300
screen_width = app.winfo_screenwidth()
screen_height = app.winfo_screenheight()
x = (screen_width - window_width) / 2
y = (screen_height - window_height) / 2
app.geometry('%dx%d+%d+%d' % (window_width, window_height, x, y))
app.resizable(width=False, height=False)

# 创建窗口“帮助”菜单栏
menu_bar = tk.Menu(app)
file_menu = tk.Menu(menu_bar, tearoff=0)
file_menu.add_command(label="关于程序", command=app_about)
file_menu.add_command(label="程序讲解", command=show_help)
file_menu.add_separator()  
file_menu.add_command(label="退出", command=quit_show)
menu_bar.add_cascade(label="帮助", menu=file_menu)
app.config(menu=menu_bar)

# 设置窗口标题
app.title('辞职信')

# 创建一个Frame框架
text_frame = tk.Frame(app, width=500, height=300)
text_frame.pack()

# 创建标签,用于显示辞职内容
tk.Label(text_frame, text='尊敬的领导', font=24, padx=10, pady=10, justify=tk.LEFT).pack()
tk.Label(text_frame, text="由于我家的床生病了,", font=24, padx=10, pady=10, justify=tk.LEFT).pack()
tk.Label(text_frame, text="我要回去照顾它,", font=24, padx=10, pady=10, justify=tk.LEFT).pack()
tk.Label(text_frame, text="望领导批准,容我辞职。", font=24, padx=10, pady=10, justify=tk.LEFT).pack()
tk.Label(text_frame, text='辞职人:疯狂的程序员', height=25, font=24, padx=10, pady=10, anchor=tk.N).pack()

# 创建“同意”按钮
agree_button = tk.Button(app, text='同意', font=24, bd=0, width=6, height=1, bg='#33b3fd')
agree_button.place(relx=0.4, rely=0.8, anchor=tk.CENTER)

# 创建“不同意”按钮
disagree_button = tk.Button(app, text='不同意', font=24, bd=0, width=6, height=1, bg='#33b3fd')
disagree_button.place(relx=0.6, rely=0.8, anchor=tk.CENTER)

# 创建第二个Frame框架,显示点击“同意”后的内容
agree_frame = tk.Frame(app)

# 创建标签,显示文本“终于同意了,谢谢批准!”
tk.Label(agree_frame, text='终于同意了,谢谢批准!', font=('宋体', 18), justify=tk.LEFT, height=300, fg='red', padx=50).pack()

# 创建一个退出按钮
tk.Button(agree_frame, text='退出', font=24, bd=0, width=6, height=1, bg='#33b3fd', command=app.destroy).place(relx=0.8, rely=0.8)

# 绑定窗口的关闭事件处理
app.protocol('WM_DELETE_WINDOW', quit_show)

# 定义鼠标进入“不同意”按钮时的处理函数
def move(event):
    # 随机移动按钮位置
    disagree_button.place(relx=random.uniform(0.05, 0.95), rely=random.uniform(0.05, 0.95), anchor=tk.CENTER)

# 为“不同意”按钮绑定鼠标进入事件
disagree_button.bind('<Enter>', move)

# 定义点击“同意”按钮后的处理函数
def agree():
    # 隐藏第一个Frame框架
    text_frame.pack_forget()

    # 将"不同意"按钮归位
    disagree_button.place(relx=0.6, rely=0.8, anchor=tk.CENTER)

    # 显示第二个Frame框架
    agree_frame.pack()

# 配置“同意”按钮的点击事件
agree_button.config(command=agree)

# 开启主循环,让窗口处于显示状态
app.mainloop()