weixin_53911587 2023-03-03 11:27 采纳率: 100%
浏览 10
已结题

在wxpython类中不能停止音乐

在wxpython类,可以导入并播放音乐,不能停止音乐,期待你的解答,谢谢!

import wx
import pygame
class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(None,title='music',size=(500,300),pos=(50,50))
        panel=wx.Panel(parent=self)
        self.b1=wx.Button(parent=panel,label='start',id=1,pos=(150,100))
        self.b2=wx.Button(parent=panel,label='stop',id=2,pos=(250,100))
        self.Bind(wx.EVT_BUTTON,self.on_click,id=1,id2=5)

    def music(self):
        filepath='1.mp3'
        pygame.mixer.init()
        pygame.mixer.music.load(filepath)
        pygame.mixer.music.play(start=0.0)
        
    def on_click(self,event):
        event_id=event.GetId()
        if event_id==1:
            self.music()
        elif event_id==2:
            pygame.mixer.pause()

if __name__=="__main__":
    app=wx.App()
    frm=MyFrame()
    frm.Show()
    app.MainLoop()
    

  • 写回答

2条回答 默认 最新

  • 元气少女缘结神 2023-03-03 11:43
    关注

    参考这样用计数的方式让它停止:

    import wx
    import pygame
    import os
    import random
    import time
    class IsPrimeFrame(wx.Frame):
        def __init__(self,superion,count=0):
            wx.Frame.__init__(self,parent=superion ,title='Big Eye',size = (400,200))
            self.count=count
            panel = wx.Panel(self)
            panel.SetBackgroundColour('Red')
            self.buttonPlay = wx.Button(parent=panel,label='PLAY',pos=(50,90))
            self.Bind(wx.EVT_BUTTON,self.OnbuttonPlay,self.buttonPlay)
    
            self.buttonPause = wx.Button(parent=panel,label='Pause',pos=(150,90))
            self.Bind(wx.EVT_BUTTON,self.OnbuttonPause,self.buttonPause)
    
            self.buttonQuit = wx.Button(parent=panel,label='Quit',pos=(250,90))
            self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
        def OnbuttonPlay(self,even):
            folder = r'd:\music'
            musics = [folder+'\\'+music for music in os.listdir(folder) if music.endswith('.mp3')]
            pygame.mixer.init()
            total =len(musics)
            if not pygame.mixer.music.get_busy():
                playMusic = random.choice(musics)
                pygame.mixer.music.load(playMusic)
                pygame.mixer.music.play(1)
                print 'playing...',playMusic
            else:
                time.sleep(1)
        def OnbuttonPause(self,even):
            if self.count%2 ==0:
                pygame.mixer.music.pause()
            else:
                pygame.mixer.music.unpause()
            self.count = self.count+1
        def OnbuttonQuit(self,even):
            dlg = wx.MessageDialog(self,'Really Quit?','Caution',wx.CANCEL|wx.OK|wx.ICON_QUESTION)
            if dlg.ShowModal() ==wx.ID_OK:
                self.Destroy()
    if __name__ == '__main__':
        aa = wx.App()
        frame = IsPrimeFrame(None)
        frame.Show()
        aa.MainLoop()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月11日
  • 已采纳回答 3月3日
  • 创建了问题 3月3日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效