2011-07-04 1 views
0

いくつかのシェルコマンドの後にユーザーのフィードバックを提供するための基本的なGUIを実行しています。Pythonのシェルコマンドの基本GUI Tkのスレッドとos.systemの呼び出し

各os.system呼び出し後に、os.systemシステムコールが完了し、TKウィンドウを複数回更新するのを待っているTKウィンドウを表示します。

スレッディングはどのようにtkで動作しますか?

これは、ありがとうございます!

答えて

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() 
1

標準のスレッドライブラリは、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を参照してください。

+0

ありがとうコンスタンチニウス、私はそれをチェックします! –

+0

Constantiniusあなたのご意見ありがとう私は完全な例をここに掲載しています:http://pastebin.com/AD0UAuMS答えに含めれば素晴らしいでしょう。 –

関連する問題