python - करण - सांप के प्रकार



अगली, अजगर में पहले पूरा होने के बाद क्या लगता है? (1)

पायथन / पायगामे में, मैं एक निश्चित WAV फाइल को दोहराने की इच्छा करता pygame.mixer.Sound("foo.wav").play() द्वारा पढ़ा जाता है pygame.mixer.Sound("foo.wav").play() एक लूप में, और उन्हें एक के बाद एक खेलते हैं, अधिमानतः आखिरकार पूरा होने के बाद या एक डिफ़ॉल्ट विलंब द्वारा (1500ms काम करता है)

अब तक, परामर्श, मेरे पास यह है:

    for x in range(0, 5):
        pygame.mixer.Sound("foo.wav").play()

जब यह खेलता है, फिर भी, यह एक बार में सभी खेलता है।

एक विलंब के लिए pygame.time का उपयोग करते हुए खिड़की को लटकाया जाता है, जैसे कि टिनकिनटर। (1500) बाद में, और मुझे सीधे-फ़्रेड्ड का अर्थ नहीं मिल सकता है इसका मतलब पुस्तकालयों या अजगर के साथ करना है या कुछ टन देरी के रूप में मैं इरादा मैं अजगर को पायथन के लिए और अधिक 'मानक' ऑडियो ड्रॉप-इन के साथ स्थानांतरित कर सकता हूं, या संभवतः बटन दबाए जाने के लिए थ्रेडिंग का उपयोग कर सकता है, अगर उसे अकेले पैगमे मिक्सर के साथ ऐसा करने के लिए हैकर की आवश्यकता होती है।

यदि आवश्यक हो तो कुछ आसान संदर्भ: http://www.pygame.org/docs/ref/music.html https://docs.python.org/2/library/tkinter.html


ऐसा करने के लिए सबसे आसान तरीका लगता है कि प्रत्येक आवाज़ की लंबाई प्राप्त करने के लिए और अगले समय के बाद खेलने के बाद, टिनकिनॉटर द्वारा विधि के after

self.sound_queue = [pygame.mixer.Sound(s) for s in ('foo.wav', 'bar.ogg', 'baz.mp3')]

def play_queue(self, q, num=0)
    sound = q[num]
    duration = int(sound.get_length() * 1000)
    sound.play()
    if num < len(q)-1:
        self.root.after(duration, self.play_queue, q, num+1)

self.play_queue(self.sound_queue)

आप pygame.mixer.Channel.queue() और pygame.mixer.Channel.set_endevent पर भी देख सकते हैं, क्योंकि ये संभवत: इस प्रकार की कार्य करने का इरादा है





pygame