在 WinSound 中使用变量播放声音

用户想使用 winsound.PlaySound() 函数播放存储在变量中的声音,而不是特定的声音。用户正在制作一个简易的音乐播放器,希望能够播放用户选择的歌曲。

  1. 解决方案
    winsound.PlaySound() 需要一个带有文件名和一个或多个标志的字符串。建议使用 SND_ASYNC 标志,它会播放声音并立即返回。可以使用以下代码:
    在这里插入图片描述
winsound.PlaySound('C:/Windows/Media/chimes.wav', winsound.SND_ASYNC)

您也可以使用变量存储文件名,然后将变量传递给 PlaySound() 函数。例如:

sound_file = 'C:/Windows/Media/chimes.wav'
winsound.PlaySound(sound_file, winsound.SND_ASYNC)

以下是如何使用 Tkinter 创建一个简单的音乐播放器来选择和播放歌曲的代码示例:

import Tkinter, Tkconstants, tkFileDialog
import winsound
from Tkconstants import *
from tkFileDialog import *
from PIL import Image, ImageTk

class MusicPlayer(Tkinter.Frame):

  def __init__(self, root):

    Tkinter.Frame.__init__(self, root)


    # options for buttons
    button_opt = {'fill': Tkconstants.BOTH, 'padx': 5, 'pady': 5}

    #options for images

    # define image
    img = Image.open('musicPlayer.PNG')
    bg = ImageTk.PhotoImage(img)
    label = Tkinter.Label(image=bg)
    label.image = bg
    label.pack()

    # define buttons
    but1 = Tkinter.Button(self, text='Play', command=self.play)
    but2 = Tkinter.Button(self, text='Stop', command=self.stop)
    but1.grid(sticky="S, W, E", column=1)
    but1.grid(sticky="S, W, E", column=1)   

    # define options for opening or saving a file
    self.file_opt = options = {}
    options['defaultextension'] = '*.wav'
    options['filetypes'] = [('WAV Sound Files', '*.wav')]
    options['initialdir'] = 'C:\\'
    options['initialfile'] = '.wav'
    options['parent'] = root
    options['title'] = 'Pick a File'

    # This is only available on the Macintosh, and only when Navigation Services are installed.
    #options['message'] = 'message'

    # if you use the multiple file version of the module functions this option is set automatically.
    #options['multiple'] = 1

    # defining options for opening a directory
    self.dir_opt = options = {}
    options['initialdir'] = 'C:\\'
    options['mustexist'] = False
    options['parent'] = root
    options['title'] = 'Pick a Dir'

  def askopenfile(self):

    return tkFileDialog.askopenfile(mode='r', **self.file_opt)

  def askopenfilename(self):

    # get filename
    filename = tkFileDialog.askopenfilename(**self.file_opt)

    # open file on your own
    if filename:
      return open(filename, 'r')
      print filename

  def asksaveasfile(self):

    return tkFileDialog.asksaveasfile(mode='w', **self.file_opt)

  def asksaveasfilename(self):

    # get filename
    filename = tkFileDialog.asksaveasfilename(**self.file_opt)

    # open file on your own
    if filename:
      return open(filename, 'w')

  def askdirectory(self):

    return tkFileDialog.askdirectory(**self.dir_opt)

  def play(self):
    soundfile = self.askopenfilename()

    winsound.PlaySound(soundfile, winsound.SND_ASYNC)

  def stop(self):
    winsound.PlaySound(None, winsound.SND_PURGE)

if __name__=='__main__':
  root = Tkinter.Tk()
  root.iconbitmap(r'C:\Python27\DLLs\musicPlayer.ico')
  MusicPlayer(root).pack()
  root.wm_title('Music Player')
  root.mainloop()

以上代码演示了如何使用 Tkinter 创建一个简单的音乐播放器来选择和播放歌曲。您可以根据自己的需要进行调整和修改。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值