1

我正在开发一个进度条,用于跟踪 pygame 中的某个功能。

以下代码导致我必须强制退出的循环。我想不出我们的错误。任何帮助都会很棒。

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()

我从外壳调用函数。然后它停止并且不出来。

这只是我工作的进度条部分。但是,它每次都会导致程序崩溃。

4

1 回答 1

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的毫秒后调用。

于 2013-07-27T05:12:28.370 回答