我怎样才能select某一首歌用pygame玩了?我把它们放入一个列表,但下面的代码无法正常工作。当我运行该应用程序,将打印"none"并且当我去掉pygame.mixer.music.play,应用程序给出了错误:“所需的整数此外,当我改变码作为;
selected_song = random.randint(0,len(songs))
pygame.mixer.music.load(songs[selected_song])
它给出了这样的错误:无法从RWops读取。所以我无法弄清楚。
from tkinter import *
import pygame, os, random
pygame.mixer.init()
songs = (pygame.mixer.music.load("A.mp3"),
pygame.mixer.music.load("B.mp3"),
pygame.mixer.music.load("C.mp3"),
pygame.mixer.music.load("D.mp3"))
window=Tk()
window.geometry("175x150")
class Player:
def __init__(self):
pass
def play(init):
selected_song = random.choice(songs)
#pygame.mixer.music.play(selected_song) #uncomment this
print(selected_song) #comment this
return selected_song
a = Player()
l1=Label(window,text="Music Player",font="times 20")
l1.grid(row=1,column=1)
b1=Button(window,text="Play",width=20,command=a.play)
b1.grid(row=4,column=1)
#b2=Button(window,text="Pause",width=20,command=stop)
#song_list=os.listdir()
#song_listbox=StringVar(window)
#song_listbox.set("select songs")
#menu=OptionMenu(window,song_listbox,*song_list)
#menu.grid(row=4,column=4)
window.mainloop()
分析解答
pygame.mixer.music.load()
总是会返回None
,因此您songs
元组将始终(None, None, None, None)
:
pygame.mixer.music.load()
加载播放的音乐文件
load(filename) -> None
load(object) -> None>
这将加载一个音乐filename/file对象和播放做准备。如果音乐流已经玩它会被停止。这不启动音乐播放。
它总是有益的,如果不需要读出你使用的库文件。
您应该只存储在songs
文件名:
songs = ("A.mp3", "B.mp3", "C.mp3", "D.mp3")
并发挥一个随机的音乐文件,做
...
selected_song = random.choice(songs) # select music file
pygame.mixer.music.load(selected_song) # load music file
pygame.mixer.music.play() # play it
...
请注意,如果音乐文件在你开始你的程序相同的目录,这只会工作。