Tkinter线程并返回文本窗口

2024-10-01 05:02:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我读过一些关于堆栈溢出,Issues intercepting subprocess output in real timeRedirect command line results to a tkinter GUI的文章,我知道我必须在tkinter中使用线程和队列,但我仍然不能做同样的事情,因为我是程序初学者,请帮助。在

目标:按下一个按钮,获得“top”命令输出并在tkinter文本小部件中实时显示

问题:我尝试过遵循代码,但仍然无法获得输出,但我不知道如何使其工作。在

from tkinter import *
import tkinter as tk
import subprocess
from threading import Thread
from queue import Queue

window = tk.Tk()
window.title('realtime')
window.geometry('800x400')








text = tk.Text(window)
text.pack()
button = tk.Button(window, text= 'Press')
button.pack()


window.mainloop()

这只是gui的前景,请帮忙


Tags: textinfromimportoutput堆栈tkinterbutton
1条回答
网友
1楼 · 发布于 2024-10-01 05:02:08

top时不时地刷新自己,我猜这就是你想用线程之类的方法捕捉的行为。但是,在这种情况下,要求top只运行一次,并让tkinter执行计时和刷新操作会更容易:

import tkinter as tk
from sh import top

def update_text():
    text.delete(0.0, tk.END)
    text.insert(0.0, top('-b', n=1))
    window.after(1000, update_text) # call this function again in 1 second

window = tk.Tk()
window.title('realtime')
window.geometry('800x400')

text = tk.Text(window)
text.pack()
button = tk.Button(window, text= 'Press', command=update_text)
button.pack()

window.mainloop()

您可能需要安装^{}才能像我一样运行top,或者根据需要使用subprocess.check_output。在

^{pr2}$

相关问题 更多 >