いくつかのシェルコマンドの後にユーザーのフィードバックを提供するための基本的なGUIを実行しています。Pythonのシェルコマンドの基本GUI Tkのスレッドとos.systemの呼び出し
各os.system呼び出し後に、os.systemシステムコールが完了し、TKウィンドウを複数回更新するのを待っているTKウィンドウを表示します。
スレッディングはどのようにtkで動作しますか?
これは、ありがとうございます!
いくつかのシェルコマンドの後にユーザーのフィードバックを提供するための基本的なGUIを実行しています。Pythonのシェルコマンドの基本GUI Tkのスレッドとos.systemの呼び出し
各os.system呼び出し後に、os.systemシステムコールが完了し、TKウィンドウを複数回更新するのを待っているTKウィンドウを表示します。
スレッディングはどのようにtkで動作しますか?
これは、ありがとうございます!
私がやったことのちょっとした基本的な例ですが、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()
標準のスレッドライブラリは、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答えに含めれば素晴らしいでしょう。 –