Python脚本速成

4_文本框

# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox

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")
        self.master.configure(bg='white')

        # 创建界面组件
        self.组件布局()

        # 给日志添加一个滚动条 开始

        # 1. 先创建滚动条
        self.scrollbar_1 = tk.Scrollbar(
            self.master,
            orient="vertical",  # 垂直滚动条
            name="滚动条_日志"
        )
        self.scrollbar_1.place(
            x=478.0,  # 文本框宽度455 + x坐标23 = 478,刚好贴在文本框右侧
            y=63.0,  # 与文本框y坐标一致
            width=15.0,
            height=274.0  # 与文本框高度一致
        )

        # 2. 创建文本框,并关联滚动条
        self.text_1 = tk.Text(
            self.master,
            bg="white",
            fg="black",
            font=('微软雅黑', 10),
            name="文本框_日志",
            yscrollcommand=self.scrollbar_1.set  # 关联滚动条
        )
        self.text_1.place(
            x=23.0,
            y=63.0,
            width=455.0,
            height=274.0
        )

        # 3. 设置滚动条控制文本框
        self.scrollbar_1.config(command=self.text_1.yview)

        # 给日志添加一个滚动条 结束



        self.master.nametowidget('按钮_开始').config(command=self.开始)
        self.master.nametowidget('按钮_清空').config(command=self.清空)
        self.master.nametowidget('按钮_复制内容').config(command=self.复制内容)
        self.序号 = 0

    def 开始(self):
        print(454554)
        self.序号 +=1
        self.master.nametowidget('文本框_日志').insert(tk.END, f'末尾追加{self.序号}\n')  # 文本末尾
        self.master.nametowidget('文本框_日志').see(tk.END) # 滚动到最后一行

        # 获取文本框最后一行的索引(格式为 "行号.列号")
        last_index = self.master.nametowidget('文本框_日志').index(tk.END)
        # 分割索引字符串,提取行号并转换为整数
        总行数 = int(last_index.split('.')[0]) - 1  # -1 是因为END指向最后一行的末尾,行号会多1

        if 总行数 == 3000: # 回血
            self.清空() # 调用 “清空”函数


    def 清空(self):
        self.master.nametowidget('文本框_日志').delete('1.0',tk.END) # 删除所有内容

    def 复制内容(self):
        获取的内容 = self.master.nametowidget('文本框_日志').get('1.0',tk.END).strip('\n')   # 获取所有的内容;   rstrip('\n') 表示:删除首尾的"\n"

        # print(获取的内容)
        # 把内容放至剪辑板

        self.master.clipboard_clear()  # 清空剪贴板
        self.master.clipboard_append(获取的内容)
        self.master.update()  # 必须加,否则不生效

        # messagebox.showinfo("温馨提示:","内容已置剪辑板,Ctrl+V 使用!")
        # messagebox.showerror("温馨提示:","内容已置剪辑板,Ctrl+V 使用!")
        messagebox.showwarning("温馨提示:","内容已置剪辑板,Ctrl+V 使用!")



    def 组件布局(self):
        """创建所有界面组件"""

        # 按钮: 按钮_6bdeffaa -> btn_1
        self.btn_1 = tk.Button(
            self.master,
            text="开始",
            bg="#4CAF50",
            fg="white",
            font=('微软雅黑', 10),
            name="按钮_开始"
        )
        self.btn_1.place(
            x=62.0,
            y=13.0,
            width=100,
            height=25
        )

        # 文本框: 文本框_76432340 -> text_1
        self.text_1 = tk.Text(
            self.master,
            bg="white",
            fg="black",
            font=('微软雅黑', 10),
            name="文本框_日志"
        )
        self.text_1.place(
            x=23.0,
            y=63.0,
            width=455.0,
            height=274.0
        )


        # 按钮: 按钮_df31c7f8 -> btn_2
        self.btn_2 = tk.Button(
            self.master,
            text="清空",
            bg="#4CAF50",
            fg="white",
            font=('微软雅黑', 10),
            name="按钮_清空"
        )
        self.btn_2.place(
            x=170.0,
            y=14.0,
            width=100,
            height=25
        )

        # 按钮: 按钮_d6304733 -> btn_3
        self.btn_3 = tk.Button(
            self.master,
            text="复制内容",
            bg="#4CAF50",
            fg="white",
            font=('微软雅黑', 10),
            name="按钮_复制内容"
        )
        self.btn_3.place(
            x=280.0,
            y=15.0,
            width=100,
            height=25
        )


def main():
    """主函数"""
    root = tk.Tk()
    app = GeneratedUI(root)
    root.mainloop()

if __name__ == "__main__":
    main()