在 python 脚本中使用 winsound 时音乐突然停止播放
Music suddenly stops playing while using winsound in python script
我有一个计算机项目,我在其中使用 tkinter 制作 GUI 应用程序。用户可以选择通过 window 中的单选按钮打开或关闭音乐。我制作了以下代码,以便你们可以复制并自己尝试。
import tkinter as tk
import winsound as ws
import sys
root = tk.Tk() # Main window
root.geometry("200x200")
myColor = '#40E0D0' # Its a light blue color
root.configure(bg=myColor) # Setting color of main window to myColor
def musicplayer(music_onoff):
if sys.platform == "win32":
if music_onoff == True:
ws.PlaySound('8-bit.wav', ws.SND_FILENAME |
ws.SND_ASYNC | ws.SND_LOOP)
else:
ws.PlaySound(None, ws.SND_ASYNC)
else:
popup.showwarning('Warning', "Only supported on Windows devices")
# Linking style with the button
rb1 = tk.Radiobutton(text="Off")
rb2= tk.Radiobutton(text="On")
rb1.configure(command=lambda x=False: musicplayer(x))
rb2.configure(command=lambda x=True: musicplayer(x))
rb1.pack() # Placing Radiobutton
rb2.pack()
root.mainloop()
8-bit.wav
文件对应于此 video,它是 Never Gonna Give You Up 的 8 位版本。我将视频转换为 .wav 格式。当我在我的 windows 默认 mp3 播放器(这是律动音乐)上播放 .wav 文件时会播放整首歌曲,但当我使用 winsound 时不会播放。我不确定为什么会这样,因为当音乐停止时,我的控制台上也没有出现任何错误。
更新:
意识到问题是由 winsound 引起的,因为它是一个 8 位声音文件。使用convertio.co之类的在线转换器将其转换为16位签名的wav文件,然后使用它解决问题。
我有一个计算机项目,我在其中使用 tkinter 制作 GUI 应用程序。用户可以选择通过 window 中的单选按钮打开或关闭音乐。我制作了以下代码,以便你们可以复制并自己尝试。
import tkinter as tk
import winsound as ws
import sys
root = tk.Tk() # Main window
root.geometry("200x200")
myColor = '#40E0D0' # Its a light blue color
root.configure(bg=myColor) # Setting color of main window to myColor
def musicplayer(music_onoff):
if sys.platform == "win32":
if music_onoff == True:
ws.PlaySound('8-bit.wav', ws.SND_FILENAME |
ws.SND_ASYNC | ws.SND_LOOP)
else:
ws.PlaySound(None, ws.SND_ASYNC)
else:
popup.showwarning('Warning', "Only supported on Windows devices")
# Linking style with the button
rb1 = tk.Radiobutton(text="Off")
rb2= tk.Radiobutton(text="On")
rb1.configure(command=lambda x=False: musicplayer(x))
rb2.configure(command=lambda x=True: musicplayer(x))
rb1.pack() # Placing Radiobutton
rb2.pack()
root.mainloop()
8-bit.wav
文件对应于此 video,它是 Never Gonna Give You Up 的 8 位版本。我将视频转换为 .wav 格式。当我在我的 windows 默认 mp3 播放器(这是律动音乐)上播放 .wav 文件时会播放整首歌曲,但当我使用 winsound 时不会播放。我不确定为什么会这样,因为当音乐停止时,我的控制台上也没有出现任何错误。
更新:
意识到问题是由 winsound 引起的,因为它是一个 8 位声音文件。使用convertio.co之类的在线转换器将其转换为16位签名的wav文件,然后使用它解决问题。