# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from PIL import Image, ImageTk # 导入PIL库处理图片
class GeneratedUI:
"""生成的Tkinter界面"""
def __init__(self, master=None):
# 创建主窗口
self.master = master if master else tk.Tk()
self.master.title("标签的使用") # 标题
self.master.geometry("500x350+700+100") # 窗口大小(500x350)、窗口位置(700+100,启动起来的位置),700控制左右 100控制上下
self.master.configure(bg='white') # 背景色
# 创建界面组件
self.组件布局()
# 1、按钮点击事件
# self.btn_1.config(command=self.开始按钮) # 重置或者添加属性
self.master.nametowidget('按钮_开始按钮').config(command=self.开始按钮) # 重置或者添加属性
# 2、设置按钮图标 【图标按钮】
icon = tk.PhotoImage(file=r".\图片\句柄.png") # 加载图片
self.master.nametowidget('按钮_取句柄').config(image=icon,compound="center") # 设置按钮图片的属性
self.btn_2 = icon
# 修改文字 按钮事件
self.master.nametowidget('按钮_修改文字').config(command=self.修改文字)
# 绑定 鼠标悬停效果
self.master.nametowidget('标签_显示文字').bind("<Enter>", self.鼠标在上面)
self.master.nametowidget('标签_显示文字').bind("<Leave>", self.鼠标拿开)
def 鼠标在上面(self,event):
event.widget.config(fg='#00ff00')
def 鼠标拿开(self,event):
event.widget.config(fg="#ffffff")
# # 加载并显示BMP图片
# self.load_bmp_image()
#
# def load_bmp_image(self):
# # 图片路径(注意路径中的反斜杠转义,或直接用原始字符串r"")
# img_path = r".\图片\图片.bmp"
#
# try:
# # 1. 用Pillow打开BMP图片(自动兼容所有BMP格式)
# # 可选:调整图片大小(如果图片太大),比如缩放到200x200
# img = Image.open(img_path)
# # img = img.resize((200, 200), Image.Resampling.LANCZOS) # 按需调整大小
#
# # 2. 转换为Tkinter可识别的格式
# tk_img = ImageTk.PhotoImage(img)
#
# # 3. 绑定图片到标签(关键:必须保留tk_img的引用,否则会被GC回收导致图片不显示)
# self.lbl_2.config(image=tk_img)
# self.lbl_2.image = tk_img # 保存引用,避免图片消失
#
# except FileNotFoundError:
# self.lbl_2.config(text="图片文件未找到!")
# except Exception as e:
# self.lbl_2.config(text=f"加载失败:{str(e)}")
def 修改文字(self):
self.master.nametowidget('标签_显示文字').config(text = "显示图片")
# 1、加载显示图片(png)
# photo = tk.PhotoImage(file="./图片/显示的图片2.png")
# 2、加载显示图片(bmp)
photo = ImageTk.PhotoImage(Image.open('./图片/图片.bmp')) # 加载转换格式显示
self.master.nametowidget('标签_图片').config(image=photo,anchor="center",text="") # 东:e; 西:w; 南:s; 北:n; 西北:nw; 居中:center
self.master.nametowidget('标签_图片').image = photo
def 开始按钮(self):
# 1、清空输入框内的内容
self.master.nametowidget('输入框_句柄').delete(0,tk.END) # 第一个,至最后一个,全部删除(清空)
# 2、往输入框内写文字
self.master.nametowidget('输入框_句柄').insert(0, "123") # 在开头插入
# 3、密码显示模式
self.master.nametowidget('输入框_句柄').config(show = "*")
def 组件布局(self):
"""创建所有界面组件"""
# 按钮: 按钮_1f8244b5 -> btn_1
self.btn_1 = tk.Button(
self.master,
text="开始按钮",
bg="#4CAF50",
fg="white",
font=['微软雅黑', 10],
name="按钮_开始按钮"
)
self.btn_1.place(
x=153.0,
y=24,
width=80,
height=25
)
# 按钮: 按钮_10116bb8 -> btn_2
self.btn_2 = tk.Button(
self.master,
text="",
bg="#4CAF50",
fg="white",
font=['微软雅黑', 10],
name="按钮_取句柄"
)
self.btn_2.place(
x=14.0,
y=24.0,
width=25,
height=25
)
# 输入框: 输入框_f720608a -> entry_1
self.entry_1 = tk.Entry(
self.master,
bg="white",
fg="black",
font=['微软雅黑', 10],
name="输入框_句柄"
)
self.entry_1.place(
x=46.0,
y=24,
width=100,
height=25
)
# 标签: 标签_05cf90b9 -> lbl_1
self.lbl_1 = tk.Label(
self.master,
text="显示文字",
bg="#2196F3",
fg="white",
font=('微软雅黑', 10),
name="标签_显示文字"
)
self.lbl_1.place(
x=245.0,
y=24,
width=100,
height=25
)
# 按钮: 按钮_b35f9e79 -> btn_3
self.btn_3 = tk.Button(
self.master,
text="修改文字",
bg="#4CAF50",
fg="white",
font=('微软雅黑', 10),
name="按钮_修改文字"
)
self.btn_3.place(
x=352.0,
y=24,
width=100,
height=25
)
# 标签: 标签_9d358d26 -> lbl_2
self.lbl_2 = tk.Label(
self.master,
text="图片",
bg="#2196F3",
fg="white",
font=('微软雅黑', 10),
name="标签_图片"
)
self.lbl_2.place(
x=13.0,
y=66.0,
width=473.0,
height=275.0
)
def main():
"""主函数"""
root = tk.Tk()
app = GeneratedUI(root)
root.mainloop()
if __name__ == "__main__":
main()