2013-07-27 2 views
1

파이 게임에서 특정 기능을 추적하는 진행률 표시 줄에서 작업 중입니다.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() 

나는 쉘에서 함수를 호출한다. 그리고 나서 그것이 멈추고 그것에서 나오지 않습니다.

이것은 내 작업의 진행률 막대 부분입니다. 그러나 매번 프로그램이 중단됩니다.

답변

2

반복하지 마십시오. 대신 다음 코드를 시도 : 지정된 ms 밀리 초 후

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을.