页次: 1
python 程序,我用 subprocess 调用一个外部程序,将这个外部程序的标准输出重定向到 tkinter.Text ,这个外部程序类似一个 web 服务器,会一直运行,并持续输出,会不会造成 Text 控件内容太多而崩溃?该如何处理?比如说只保留最新的一千行输出
求教,谢谢
离线
整了以下代码,可以跑,大佬给点建议
import sys
import time
from multiprocessing import Process
from queue import Queue
from threading import Thread
from tkinter import *
def update_text(text_widget, queue):
while True:
text_widget.insert(END, queue.get())
if int(text_widget.index('end-1c').split('.')[0]) > 10:
text_widget.delete('1.0', '2.0')
time.sleep(0.5)
def genlines(q):
sys.stdout = q
for i in range(30):
print(f'Line {i}')
#time.sleep(1)
class StdoutQueue(Queue):
def __init__(self,maxsize=0):
return Queue.__init__(self, maxsize=0)
def write(self, msg):
self.put(msg)
def flush(self):
sys.__stdout__.flush()
if __name__ == '__main__':
root = Tk()
mytxt = Text(root)
mytxt.pack()
q = StdoutQueue()
mybtn = Button(
root,
text='Test',
command=lambda:genlines(q))
mybtn.pack()
text_monitor = Thread(target=update_text, args=(mytxt, q))
text_monitor.daemon = True
text_monitor.start()
root.mainloop()
最近编辑记录 jackphil (2023-03-23 12:49:24)
离线
页次: 1