2014-11-20 119 views
0

我在Raspberry Pi上連接了一個20 * 4的LCD屏幕。有用。如何在循環內暫停?

我有一個代碼,以篩選幾個句子和循環他們

但我找不到暫停各4句和明年4句

這裏之前清除屏幕上正確的方法是實際代碼(編輯,因爲當粘貼我有縮進改變)

def typewriter_like(sentence, lcd_line, delay=0.7): 
     for i,letter in enumerate(sentence): 
      lcd_byte(lcd_line, LCD_CMD) 
      lcd_string(sentence[:i+1],1) 
      time.sleep(delay) 

     mots = (("EXAMPLE", "EXAMPLES", "EXAMPLESS", "EXAMPLESSS"), 
       ("ONE", "TWO", "THREE", "FOUR"), 
       ("LULU", "FIFI", "RIRI", "TATA")) 
     lcds = (0x80, 0xC0, 0x94, 0xD4) 
     list(zip(mots,lcds)) 
     [(('EXAMPLE', 'EXAMPLES', 'EXAMPLESS', 'EXAMPLESSS'),128),(('ONE', 'TWO', 'THREE','FOUR'),192),(('LULU', 'FIFI', 'RIRI', 'TATA'),148)] 

    while True: 
    for mot in mots: 
     for word, lcd in zip(mot, lcds): 
      typewriter_like(word, lcd) 
     time.sleep(10) 

     for lcd in lcds: 
       lcd_byte(lcd, LCD_CMD) 
       lcd_string("",2) 

     time.sleep(4) 

我要的是暫停第4個字...然後刪除之前打印的4個接下來的話

一切(全部清除) 210

實施例實施例實施 EXAMPLESS EXAMPLESSS

停留印刷10秒 然後,所有清零

ONE TWO THREE FOUR ...

停留印刷10秒

etc ...

並在最後一個循環... 有人可以幫我嗎?

+1

只需添加那些'time.sleep在正確的上下文()'調用。看起來也許你所需要的只是縮短time.sleep(10)一次,把它放在正確的塊中。同樣w /'time.sleep(4)'。 – 2014-11-20 19:23:05

+0

你在'typewriter_like'中打電話給'typewriter_like(word,lcd)'。那不可能是你想要的。這意味着你將進入第一個循環的第一步,然後自我調用並重新開始。更不用說'lcd'沒有在任何地方定義過,所以它可能是代碼中其他地方的一些全局變量,並且您將第一個'word'作爲新的'句子'傳遞給它。 – abarnert 2014-11-20 19:25:37

回答

0

你只需要修改縮進

while True: 
    for mot in mots: 
     for word, lcd in zip(mot, lcds): 
      typewriter_like(word, lcd) 
     time.sleep(10) 

     for word, lcd in zip(mot, lcds): 
      typewriter_like(" " * len(word), lcd) 
+0

我試過了,但很奇怪:4個句子之後沒有停頓,在篩選下一個句子之前沒有清除。我想要暫停10秒,並在接下來的4個句子 – brako 2014-11-20 19:36:54

+0

@brako之前清除所有屏幕。您不能通過寫入空字符串來清除屏幕,您可以在頂部打印空格,儘管 – 2014-11-20 20:11:57

+0

感謝Gnibbler ...現在它暫停,因爲我想......但仍然無法在打印下一句之前清除所有屏幕。這不可能嗎? – brako 2014-11-20 20:45:13