gpt4 book ai didi

python - 限制用作日志的 ScrolledText 内的行数

转载 作者:行者123 更新时间:2023-12-01 04:01:46 25 4
gpt4 key购买 nike

我有一个 ScrolledText 小部件,可以在其中输出所有日志消息。由于数量很多,并且该程序运行了几个小时,因此它会重载。

我需要一种限制行数的方法,比如 400 行。

我尝试像这样清除文本:

self.mytext.delete(1.0, END)

但它没有做任何事情。

这是我的设置:

class XStatusFrame:

def __init__(self, master, window):
self.frame = Frame(master, relief="raised", width=950)
self.frame.grid(row=4,column=0,sticky=(E,W),columnspan=20,rowspan=2)

self.clear_btn = Button(self.frame,text="Clear Log", command=lambda: self.clear_log())
self.clear_btn.pack(side=TOP, anchor=W)

# text widget
self.mytext = ScrolledText(self.frame, undo=True,state="disabled", fg="white", bg="black")
#self.mytext = Text(self.frame, state="disabled", fg="white", bg="black")
self.mytext.pack(fill=X)

# Create textLogger
text_handler = TextHandler(self.mytext)

# Add the handler to logger
self.logger = logging.getLogger()
self.logger.addHandler(text_handler)

def clear_log(self):
self.mytext.delete(1.0, END)



class TextHandler(logging.Handler):

def __init__(self, text):
# run the regular Handler __init__
logging.Handler.__init__(self)
# Store a reference to the Text it will log to
self.text = text

def num_lines(self):
return int(self.text.index('end').split('.')[0]) - 1

def emit(self, record):
msg = self.format(record)
def append():
self.text.configure(state='normal')
self.text.insert(END, "["+self.timestamp()+"]["+str(self.num_lines())+"] "+msg + '\n')
self.text.configure(state='disabled')
# Autoscroll to the bottom
self.text.yview(END)
# This is necessary because we can't modify the Text from other threads
self.text.after(0, append)

# MY Try at limiting number of lines, which doesnt work...
if self.num_lines() > 5:
self.text.delete("1.0", END)

def timestamp(self):
ts = time.time()
return datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')

最佳答案

在尝试删除行之前,您需要将文本小部件的状态设置为正常,然后再次禁用它,就像添加行时一样。您的clear_log函数应该是:

def clear_log(self):
self.mytext.configure(state='normal')
self.mytext.delete(1.0, END)
self.mytext.configure(state='disabled')

关于python - 限制用作日志的 ScrolledText 内的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36375006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com