2016-07-19 67 views
7

我正在使用一個名爲Pythonista的Python的小應用程序,它允許我每隔幾秒就改變一次事物的文本顏色。以下是我一直試圖在無限循環中做這件事的一個例子;Python:做一些然後睡覺,重複

while True: 
    v['example'].text_color = 'red' 
    time.sleep(0.5) 
    v['example'].text_color = 'blue' 
    time.sleep(0.5) 
    # and so on.. 

這裏的問題是,這會凍結我的程序,因爲Python一直在睡覺,我從來沒有看到任何改變。有沒有辦法能夠看到變化(文本變成紅/藍/等),然後在下一個任務x時間後等等?

+12

你需要看看* multithreading *。你的任務都在一個線程中運行 - 包括圖形。當你說'睡覺'時,**所有**都會睡覺。你想要做的就是把你的循環放到一個單獨的線程中,並使用異步回調來確保連續執行而不中斷程序的其餘部分。 –

+0

@PierceDarragh會這樣做,謝謝 –

+0

沒問題!網上有大量的教程,並且在這裏有許多帖子。祝你好運! :) –

回答

2

您將需要創建一個運行代碼的新線程。把你的代碼放在它自己的方法some_function()中,然後像下面這樣啓動一個新線程:

thread = Thread(target = some_function) 
thread.start()