这篇博客是一个使用 Python 的 Tkinter 模块创建一个简单界面的示例,该界面用于进行表白的情景。下面是对代码的详细介绍:
1. 导入模块:
import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
tkinter: Python 的标准图形用户界面(GUI)工具包。
messagebox: 提供了一种简单的对话框用于显示消息或获取用户的简单输入。
ttk: 提供了一组用于创建更加现代化外观的小部件的"themed"(主题化)小部件。
2. 定义函数:
on_agree(): 当用户点击愿意按钮时执行的函数。它显示一个消息框,表明用户愿意,并关闭窗口。
on_disagree(): 当用户点击不愿意按钮时执行的函数。它显示一个消息框,表示用户不愿意,但会等待答复。
on_closing(): 当用户尝试关闭窗口时执行的函数。它显示一个消息框,提示用户点击按钮做出选择。
3. 创建主窗口:
root = tk.Tk()
root.title("表白")
root.geometry("300x150")
创建了一个窗口实例,标题为“表白”,大小为 300x150 像素。
4. 设置背景颜色:
root.configure(bg='#FFCCCC')
将窗口的背景颜色设置为浅粉色。
5. 创建标签:
label = ttk.Label(root, text="亲爱的,我爱你,愿意做我女朋友吗?", foreground="black", font=("Helvetica", 12, "bold"))
label.pack(pady=10)
创建了一个用于显示文本的标签小部件,文本内容是"亲爱的,我爱你,愿意做我女朋友吗?",设置了字体为黑色,字体样式为12号Helvetica粗体。
6. 创建按钮:
agree_button = ttk.Button(frame, text="愿意", command=on_agree, style="AccentButton.TButton")
disagree_button = ttk.Button(frame, text="不愿意", command=on_disagree, style="DangerButton.TButton")
创建了两个按钮,一个是“愿意”按钮,一个是“不愿意”按钮,分别绑定了on_agree()和on_disagree()函数。
7.定义按钮样式:
style.configure('AccentButton.TButton', foreground='black', background='#FF5733')
style.configure('DangerButton.TButton', foreground='black', background='#C70039')
使用ttk.Style()创建了样式对象,并为"AccentButton.TButton"和"DangerButton.TButton"两种按钮样式分别设置了前景色(文本颜色)和背景色。
8. 拦截窗口关闭操作:
root.protocol("WM_DELETE_WINDOW", on_closing)
当用户尝试关闭窗口时,会调用on_closing()函数,显示一个提示消息框。
9.进入主事件循环:
root.mainloop()
开始运行窗口应用程序,等待用户交互事件的发生。完整的代码如下:
import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
# 当用户点击愿意按钮时执行的函数
def on_agree():
# 弹出消息框,显示表白成功的信息
messagebox.showinfo("表白成功", "你同意了!我爱你!")
# 关闭窗口
root.destroy()
# 当用户点击不愿意按钮时执行的函数
def on_disagree():
# 弹出消息框,提示用户会一直等待答复
messagebox.showinfo("提示", "亲爱的,回答错误,请重新选择喔!")
# 当用户尝试关闭窗口时执行的函数
def on_closing():
# 弹出消息框,提示用户点击按钮做出选择
messagebox.showinfo("提示", "亲爱的,请点击按钮做出选择!")
# 创建主窗口
root = tk.Tk()
root.title("表白墙")
root.geometry("300x150")
# 设置背景颜色
root.configure(bg='#FFCCCC')
# 使用ttk模块创建标签,样式稍微漂亮一些
label = ttk.Label(root, text="亲爱的,我爱你,愿意做我女朋友吗?", foreground="black", font=("Helvetica", 12, "bold"))
label.pack(pady=10)
# 使用ttk模块创建框架
frame = ttk.Frame(root)
frame.pack()
# 使用ttk模块创建愿意按钮,设置按钮背景色和前景色
agree_button = ttk.Button(frame, text="愿意", command=on_agree, style="AccentButton.TButton")
agree_button.pack(side=tk.LEFT, padx=10)
# 使用ttk模块创建不愿意按钮,设置按钮背景色和前景色
disagree_button = ttk.Button(frame, text="不愿意", command=on_disagree, style="DangerButton.TButton")
disagree_button.pack(side=tk.LEFT, padx=10)
# 拦截窗口关闭操作,绑定到on_closing函数
root.protocol("WM_DELETE_WINDOW", on_closing)
# 定义按钮样式
style = ttk.Style()
# 定义愿意按钮样式
style.configure('AccentButton.TButton', foreground='black', background='#FF5733')
# 定义不愿意按钮样式
style.configure('DangerButton.TButton', foreground='black', background='#C70039')
# 进入主事件循环
root.mainloop()