Python模块wx不播放音频音效

0 投票
2 回答
815 浏览
提问于 2025-04-21 08:09

在我的程序里,我想随机播放一些声音。但是问题是,我听不到这些声音。我没有收到错误提示之类的,只是听不到声音。谢谢大家的帮助。如果我的英语不好,请见谅。这里是我的代码:

import Tkinter as tk
import random
import wx

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        self.state("zoomed")

        container= tk.Frame(self)
        container.config()
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=2)
        container.grid_columnconfigure(0, weight=1)

        self.frames={}
        for F in (fenster, fensta):
            frame= F(container, self)
            self.frames[F]=frame
            frame.grid(row=0, column=0, sticky="nsew")
            frame.pack_propagate(0)

        self.show_frame(fenster)

    def show_frame(self, c):
        frame=self.frames[c]
        frame.tkraise()

class fenster(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        button=tk.Button(self, text="Start",
                         command=lambda: controller.show_frame(fensta))
        button.pack()

class fensta(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        def ok():
            def do_a():
                def __init__(self, parent):
                    wx.Frame.__init__(self, parent)
                    self.test = wx.Sound('ja.wav')
                    self.test.Play(wx.SOUND_SYNC)

                print("a")

            def do_b():
                def __init__(self, parent):
                    wx.Frame.__init__(self, parent)
                    self.testa = wx.Sound('nein.wav')
                    self.testa.Play(wx.SOUND_SYNC)

                print("b")

            a=random.randint(1,2)

            if a==1:
                do_a()
            elif a==2:
                do_b()

        button=tk.Button(self, text="press",  command=ok)
        button.pack()

if __name__== "__main__":
    app=SampleApp()
    app.mainloop()

2 个回答

0

要测试你的wxPython是否有问题,可以使用系统中应该已经安装的声音示例代码

如果你用这个示例代码没有声音,那说明wxPython确实有问题。在某些Linux系统上会出现一些问题,你需要手动重新编译它,并开启声音支持才能输出声音

如果声音示例正常工作,那你的问题可能是因为你在同一个程序中混用了tk和wx。这样做有什么特别的原因吗?

1

你不能把wxPython和Tkinter混在一起用。

撰写回答