Python脚本速成

3_标签

# -*- 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()