일부 쉘 명령 다음에 사용자 피드백을 제공하기 위해 기본 GUI를 수행합니다. 실제로 쉘 스크립트 용 약간의 인터페이스입니다.Python Tk 스레딩 및 os.system 호출을 사용하는 쉘 명령에 대한 기본 GUI
각 os.system 호출 후 os.system 호출이 완료되고 TK 창을 여러 번 업데이트하는 것을 기다리는 TK 창을 표시합니다.
어떻게 스레딩이 tk에서 작동합니까?
고맙습니다.
일부 쉘 명령 다음에 사용자 피드백을 제공하기 위해 기본 GUI를 수행합니다. 실제로 쉘 스크립트 용 약간의 인터페이스입니다.Python Tk 스레딩 및 os.system 호출을 사용하는 쉘 명령에 대한 기본 GUI
각 os.system 호출 후 os.system 호출이 완료되고 TK 창을 여러 번 업데이트하는 것을 기다리는 TK 창을 표시합니다.
어떻게 스레딩이 tk에서 작동합니까?
고맙습니다.
Thread가 Tk와 함께 작동한다는 것을 지적하기 위해 Constantinius에 대한 크레딧으로 내가 한 일의 기본적인 예!
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()
표준 스레딩 라이브러리는 Tk로 실행해도 완벽해야합니다. This 소식통은 주 스레드가 GUI를 실행하고 os.system()
호출에 대한 스레드를 생성하도록해야한다고 말합니다.
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])
를 사용하여 시작할 수 있습니다
당신은 작업을 마무리에 당신의 GUI를 업데이트하는이 같은 추상화를 작성할 수 있습니다. 설명서 here을 참조하십시오.
고맙습니다. 콘스탄티노스 감사합니다. –
Constantinius 귀하의 의견에 감사드립니다. 여기에 전체 예제가 있습니다. http://pastebin.com/AD0UAuMS 답변에 포함 시키면 좋을 것입니다. –