1

pyglet を介して Python 3 で曲を再生しようとしています。曲の再生と停止はできますが、次の曲を再生しようとするとエラーが発生します。私はこれらの指示に従いました。プログラムは tkinter で行います。

私のコード:

import pyglet
import glob
from tkinter import Tk, Button
songs=glob.glob("*.mp3")
player=pyglet.media.Player()
def play_song():
    global player
    for i in range(len(songs)):
        source=pyglet.resource.media(songs[i])
        player.queue(source)
    player.play()
def pause_song():
    player.pause()
def next_song():
    player.next()

window=Tk()
play_=Button(text="play", command=play_song)
play_.pack()
pause_=Button(text="pause", command=pause_song)
pause_.pack()
next_=Button(text="next", command=next_song)
next_.pack()
window.mainloop()

エラー:

Exception in Tkinter callback
Traceback (most recent call last):
   File "C:\Python33\lib\tkinter\__init__.py", line 1442, in __call__
   return self.func(*args)
  File "C:\Documents and Settings\Fany\Dokumenty\Hudba\Sabaton\2012 - Carolus Rex\py.py", line 15, in next_song
    player.next()
 AttributeError: 'Player' object has no attribute 'next'
4

2 に答える 2

0

next_song() に次の変更を加えてみてください

def next_song():
    player.next_source()

理由
このページを参照
https://pyglet.readthedocs.org/en/pyglet-1.2-maintenance/api/pyglet/media/pyglet.media.Player.html#pyglet.media.Player.time

next()は「非推奨」であり、代わりに next_source() を使用することをお勧めます

HTH

PS私のマシンであなたのスニペットをテストしたところ、うまくいきました。

于 2015-07-14T05:51:35.003 に答える