2013-07-27 129 views
1

我正在研究一個進度條,用於跟蹤pygame中的某個函數。python 2.7 while循環,ttk.progressbar不工作

以下代碼導致必須強制退出的循環。我無法弄清我的錯誤。任何幫助都會很棒。

from Tkinter import * 
import ttk 
import sys 
import pygame 

myGui = Tk() 

myGui.title("Progress Bar") 
myGui.geometry("400x200+200+300") 

value_progress = StringVar() 

pygame.mixer.init() 
pygame.mixer.music.load("/home/david/Documents/aaa.mp3") 
pygame.mixer.music.play() 


def position(): 
    global value_progress 
    while pygame.mixer.music.get_busy() == True: 
     value_progress.set(float(pygame.mixer.music.get_pos())) 


b = Button(myGui, text="Start",) 
b.pack() 


p = ttk.Progressbar(myGui, variable=value_progress, 
        mode='determinate', length=350, 
        maximum= 512920) 
p.pack() 

我從shell調用函數。然後它失速並且不會出來。

這只是我工作中的進度條部分。但是,它會導致程序每次崩潰。

回答

2

不要循環。相反,嘗試下面的代碼:

def position(): 
    global value_progress 
    if pygame.mixer.music.get_busy(): 
     value_progress.set(float(pygame.mixer.music.get_pos())) 
     myGui.after(100, position) 

Tk.after(ms, f)呼叫f指定ms毫秒之後。