2016-12-30 49 views
0

我做與印刷(和上傳)選項的大頭照。 這個項目呈現如下: 開始屏幕帶指令 - >預覽結果屏幕 - >用戶選擇要麼打印或重新啓動(或超時選擇重新啓動用戶)的Python又回到了第一個功能

如果用戶選擇打印,打印完成,並且在返回到開始屏幕之前顯示消息(睡眠方法)。現在

,我有一個主要問題: 再回到開始畫面...

簡化的代碼是在這裏:

def PreviewMontage(MontageFile): 
    global LastTap 
    LastTap = time.time() 
    print("Session ID:", SessionID) 
    print("Show something.") 
    preview = pygame.image.load(MontageFile) 
    PILpreview = Image.open(MontageFile) 
    previewSize = PILpreview.size # returns (width, height) tuple 
    #added /1.5 
    ScaleW = AspectRatioCalc(previewSize[0]/1.5, previewSize[1]/1.5, SCREEN_HEIGHT) 
    preview = pygame.transform.scale(preview, (ScaleW, SCREEN_HEIGHT)) 
    SetBlankScreen() 
    background.blit(preview, (SCREEN_WIDTH/2-ScaleW/2, 0)) 
    PrintScreen() 
    #inserting conditions here - get mouse 
    camera.stop_preview() 
    UpdateDisplay() 
    Wait() 
    return 

def Wait(): 
    clock = pygame.time.Clock() 
    waiting = True 

    while waiting: 
     time = 60 
     time = time -1 
     for event in pygame.event.get(): 
     if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFTMOUSEBUTTON: 
      x, y = event.pos 
      print("You pressed the left mouse button at (%d, %d)" % event.pos) 
      LeftMouseButtonDown(x, y) 
     if time == 0: 
      waiting = False 
return 

我遇到又回到了主屏幕的問題,似乎等待()函數永遠不會結束...

+0

外郵代碼本身。 –

+1

916行代碼太多代碼太多了。請提供一個最小化,完整和可驗證的示例。另請參閱http://stackoverflow.com/help/mcve – Brian

+0

簡化了這個問題,它似乎是等待函數 – did12345

回答

1

您在while循環的每次迭代中將time設置爲59。這意味着時間永遠不會達到0,循環是無限的。

修復它通過在這裏宣佈time = 60while()

+0

明白了,只是它變得很快,我怎麼可能在幾秒鐘內得到延遲,可以說60? – did12345

+0

我認爲這是另一個問題,但你可以做的是獲得一個時間戳並檢查每次迭代如果它已經超過了10秒,並且在那個時候打破循環。 –