我正在做一个基本的GUI,在一些shell命令之后提供一些用户反馈,真的是shell脚本的一个小接口。
在每个os.system调用之后,显示一个TK窗口,等待os.system调用多次完成和更新TK窗口。
线程如何与tk一起使用?
就是这样,谢谢!
答案 0 :(得分:1)
如果使用Tk运行标准线程库应该完全没问题。 This消息来源说,您应该让主线程运行gui并为os.system()
调用创建线程。
您可以编写这样的抽象,在完成任务后更新GUI:
def worker_thread(gui, task):
if os.system(str(task)) != 0:
raise Exception("something went wrong")
gui.update("some info")
可以使用标准库中的thread.start_new_thread(function, args[, kwargs])
启动该线程。请参阅文档here。
答案 1 :(得分:0)
这只是我所做的一个基本的例子,并且归功于Constantinius指出Thread与Tk合作!
import sys, thread
from Tkinter import *
from os import system as run
from time import sleep
r = Tk()
r.title('Remote Support')
t = StringVar()
t.set('Completing Remote Support Initalisation ')
l = Label(r, textvariable=t).pack()
def quit():
#do cleanup if any
r.destroy()
but = Button(r, text='Stop Remote Support', command=quit)
but.pack(side=LEFT)
def d():
sleep(2)
t.set('Completing Remote Support Initalisation, downloading, please wait ')
run('sleep 5') #test shell command
t.set('Preparing to run download, please wait ')
run('sleep 5')
t.set("OK thanks! Remote Support will now close ")
sleep(2)
quit()
sleep(2)
thread.start_new_thread(d,())
r.mainloop()