78 lines
2.9 KiB
Python
78 lines
2.9 KiB
Python
import socket
|
|
import struct
|
|
import tkinter as tk
|
|
import threading
|
|
from udpmsg import *
|
|
from datetime import datetime
|
|
from tkinter import font, filedialog
|
|
from tkinter import Frame
|
|
from tkinter.ttk import *
|
|
|
|
class logWin(Frame):
|
|
def __init__(self, root):
|
|
super().__init__(root)
|
|
self.root = root
|
|
custom_font = font.Font(family="Arial", size=8)
|
|
|
|
# 设置 state 为 tk.DISABLED 禁用编辑功能
|
|
self.text_box = tk.Text(root, height=10, width=50, font=custom_font, state=tk.DISABLED)
|
|
self.text_box.grid(row=0, column=0, columnspan=2, sticky='nsew')
|
|
|
|
# 创建垂直滚动条
|
|
scrollbar = tk.Scrollbar(root, command=self.text_box.yview)
|
|
scrollbar.grid(row=0, column=2, sticky='ns')
|
|
|
|
# 将滚动条与 Text 组件关联
|
|
self.text_box.config(yscrollcommand=scrollbar.set)
|
|
|
|
# 创建保存按钮
|
|
save_button = tk.Button(root, text="保存日志", command=self.save_log)
|
|
save_button.grid(row=1, column=0, sticky='ew')
|
|
|
|
# 创建清空按钮
|
|
clear_button = tk.Button(root, text="清空日志", command=self.clear_log)
|
|
clear_button.grid(row=1, column=1, sticky='ew')
|
|
|
|
# 配置行和列的权重,使组件能够随窗口大小变化而调整
|
|
root.grid_rowconfigure(0, weight=1)
|
|
root.grid_columnconfigure(0, weight=1)
|
|
root.grid_columnconfigure(1, weight=1)
|
|
|
|
def display_log(self, log_message):
|
|
# 启用编辑功能
|
|
self.text_box.config(state=tk.NORMAL)
|
|
# 将日志信息添加到 Text 组件中
|
|
self.text_box.insert(tk.END, log_message + "\n")
|
|
# 滚动到 Text 组件的底部,以显示最新的日志信息
|
|
self.text_box.see(tk.END)
|
|
# 禁用编辑功能
|
|
self.text_box.config(state=tk.DISABLED)
|
|
|
|
def save_log(self):
|
|
# 打开文件选择对话框
|
|
file_path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])
|
|
if file_path:
|
|
# 获取文本框中的内容
|
|
log_content = self.text_box.get("1.0", tk.END)
|
|
# 将内容写入文件
|
|
with open(file_path, "w") as file:
|
|
file.write(log_content)
|
|
# 显示保存成功的提示
|
|
tk.messagebox.showinfo("保存成功", "日志已成功保存到文件。")
|
|
|
|
def clear_log(self):
|
|
# 启用编辑功能
|
|
self.text_box.config(state=tk.NORMAL)
|
|
# 清空 Text 组件中的内容
|
|
self.text_box.delete("1.0", tk.END)
|
|
# 禁用编辑功能
|
|
self.text_box.config(state=tk.DISABLED)
|
|
|
|
if __name__ == "__main__":
|
|
root = tk.Tk()
|
|
root.title("能源管理系统调试")
|
|
log_win = logWin(root)
|
|
# 假设您有一个日志消息需要显示
|
|
for i in range(100):
|
|
log_win.display_log("这是一条日志信息" + str(i))
|
|
root.mainloop() |