当前位置:首页>python>Python tkinter趣味 “发财信” GUI 小程序

Python tkinter趣味 “发财信” GUI 小程序

  • 2026-08-26 00:59:20
Python tkinter趣味 “发财信” GUI 小程序

# 1. 导入所需库 

import tkinter as tk  # 导入tkinter库,并重命名为tk(Python内置的GUI库)

from tkinter import messagebox  # 从tkinter导入消息框模块(用于弹出提示框) 

from random import random  # 从random库导入random函数(生成0-1之间的随机浮点数)  

# 2. 创建主窗口并设置基础属性 

root = tk.Tk()  # 初始化Tkinter主窗口,root是主窗口对象root.geometry('500x300+100+100')  # 设置窗口大小(宽500px,高300px)和初始位置(距离屏幕左100px,上100px) 

root.title('发财信')  # 设置窗口标题为“发财信”  

# 3. 创建第一个框架(frame1):存放初始界面的内容 

frame1 = tk.Frame(root)  # 在主窗口root中创建一个框架(用于分组管理控件)

frame1.pack()  # 将frame1添加到主窗口(默认垂直排列)  

# 3.1 frame1中添加文本标签:“尊敬的各位领导” 

tk.Label(

        frame1,  # 父容器为frame1 

        text='尊敬的各位领导:',  # 显示的文本内容     

        font=24,  # 字体大小(简化写法,完整写法是('字体名', 字号)) 

        padx=30,  # 水平内边距(文字与标签边框的水平距离)

        pady=30 # 垂直内边距(文字与标签边框的垂直距离)

).pack(side=tk.LEFT, anchor=tk.N)  # 靠左排列,锚点为北(顶部)  

# 3.2 frame1中添加图片标签 

img = tk.PhotoImage(file='Ican.png')  # 加载本地图片文件(注意:仅支持png/gif格式,路径要正确) 

label_img = tk.Label(

        frame1, 

        image=img,  # 绑定加载的图片

        padx=30,

        pady=30,

        bd=0  # 边框宽度设为0(去掉图片边框) 

)

label_img.pack(side=tk.LEFT, anchor=tk.N)  # 图片标签靠左排列,锚点为北  

# 3.3 frame1中添加“发财人:夏林一”标签 

tk.Label(

        frame1,

        text='发财人:夏林一',

        height=25,  # 标签高度(单位是字符高度)

        font=24, 

        padx=30, 

        pady=30, 

        anchor=tk.S  # 锚点为南(底部,文字在标签内靠下显示)

).pack(side=tk.LEFT)  # 靠左排列  

# 3.4 加载按钮图片(同意/拒绝按钮共用一张图,可自行替换) 

yes_img = tk.PhotoImage(file='button.png')  # 同意按钮的图片 

no_img = tk.PhotoImage(file='button.png')   # 拒绝按钮的图片  

# 3.5 创建同意/拒绝按钮 

yes_btn = tk.Button(frame1, image=yes_img, bd=0)  # 同意按钮(无边框) 

no_btn = tk.Button(frame1, image=no_img, bd=0)    # 拒绝按钮(无边框)  

# 3.6 定位按钮位置(相对布局) 

yes_btn.place(relx=0.3, rely=0.8, anchor=tk.CENTER)  # 同意按钮:相对x轴30%,相对y轴80%,锚点居中 

no_btn.place(relx=0.7, rely=0.8, anchor=tk.CENTER)  # 拒绝按钮:相对x轴70%,相对y轴80%,锚点居中  

# 4. 创建第二个框架(frame2):存放点击“同意”后显示的内容 

frame2 = tk.Frame(root)  # 创建frame2(初始默认不显示) 

# 注意:这里先不pack,点击同意后再显示  

# 4.1 frame2中添加搞笑文本标签 

tk.Label(

        frame2, 

        text='老板大人,臣要发财了\n这一发,可能就是一辈子了\n!!!!o(* ̄▽ ̄*)ブ!!!', # 换行用\n 

        font=('黑体',18),  # 完整字体设置:字体名+字号

        justify=tk.LEFT, # 文本左对齐 

        height=300, # 标签高度 

        fg='red', # 文字颜色为红色

        padx=50 # 水平内边距

).pack()  

# 4.2 frame2中添加“退出”按钮 

tk.Button(

        frame2,

        text='退出',

        command=root.quit  # 点击后执行root.quit():关闭窗口 

).place(relx=0.9, rely=0.8)  # 相对布局:靠右下  

# 5. 核心逻辑函数定义 

# 5.1 关闭窗口的拦截函数:点击右上角×时触发 

def on_exit(): 

         # 弹出警告消息框:标题“提示”,内容“此路不通”

       messagebox.showwarning(title='提示',message='此路不通') 

# 绑定窗口关闭事件:替换默认的关闭行为为on_exit函数 

root.protocol('WM_DELETE_WINDOW', on_exit)  

# 5.2 拒绝按钮的移动函数:鼠标移入按钮时触发 

def move(event):  # event是事件对象(Tkinter绑定事件时自动传入)

           # 重新定位拒绝按钮:relx/rely取0-1随机值,实现按钮乱跑

        no_btn.place(relx=random(),rely=random(), anchor=tk.CENTER) 

# 绑定事件:鼠标移入no_btn按钮时,执行move函数 

no_btn.bind('<Enter>',move)  

# 5.3 同意按钮的触发函数:点击“同意”后切换界面 

def sure():     

        frame1.pack_forget()  # 隐藏frame1(只是隐藏,不是删除)

        frame2.pack()         # 显示frame2  

# 5.4 给同意按钮绑定点击事件:点击后执行sure函数 yes_btn.config(command=sure)  

# 6. 启动主事件循环:让窗口保持显示并响应交互 

root.mainloop()

-------------------------------代码部分结束--------------------------------

最新文章

随机文章