1

我有一个计算机项目,我正在使用 tkinter 制作 GUI 应用程序。用户可以选择通过窗口中的单选按钮打开或关闭音乐。我制作了以下代码,以便你们可以复制它并自己尝试。

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文件对应于这个视频,它是一个 8 位版本的 Never Gonna Give You Up。我将视频转换为 .wav 格式。当我在我的 Windows 默认 mp3 播放器(这是凹槽音乐)上播放 .wav 文件时播放完整的歌曲,但当我使用 winsound 时不会播放。我不确定为什么会发生这种情况,因为当音乐停止时,我的控制台上也没有出现错误。

4

1 回答 1

1

更新:
意识到问题是由 winsound 引起的,因为它是一个 8 位声音文件。使用convertio.co等在线转换器将其转换为 16 位签名的 wav 文件,然后使用它可以解决问题。

于 2021-12-31T12:18:53.490 回答