【问题标题】:Make a button behave differently when pressed a second time (Python)使按钮在第二次按下时表现不同(Python)
【发布时间】:2012-02-27 08:03:26
【问题描述】:

说,如果我有一个播放声音的按钮,我可以让它在你第二次按下它时停止音乐吗?

我使用 Python v.2.7,Easy Eclipse 作为 IDE,wxFormBuilder 用于 windows。

这是我的代码:

import gui
import wx
import wx.media
import pygame
import tkFileDialog

class MainFrame( gui.GUI_MainFrame):
    def __init__( self, parent ): #Definerar KunddatabasMainFrame
        pygame.init()
        gui.GUI_MainFrame.__init__( self, parent ) #Initierar MainFrame f�nstret
        self.sound1=pygame.mixer.Sound('beat1.wav')
        self.sound2=pygame.mixer.Sound('beat2.wav')
        self.recording = False

    def evtBrowse1(self, evt):
        tkFileDialog.askopenfilename()

    def evtSoOne(self, evt):
        self.sound1.play(loops=-1)

【问题讨论】:

    标签: python button audio


    【解决方案1】:

    我会使用一个全局布尔变量并在每次按下按钮时切换它。按下按钮时调用的函数会根据该变量的状态执行不同的操作。

    如果您想处理更多情况,当然可以将此扩展为 int 变量。

    【讨论】:

    • 您不需要使用全局变量 - 在这种情况下,实例变量就足够了。
    • @KarlBarker 不,在这种情况下,实例变量会错误,因为他的函数正在操纵全局状态。
    • @Deestan 我承认我没有使用 pygame - 什么全局状态受到影响?我看到的只是实例变量...
    • 啊,这是在所述问题中隐含的 - 未反映在代码 sn-p 中。声音是否正在播放,以及哪些声音在全局混音器对象上处于状态。 ——不过,称其为“错误”有点过于严格了。我假设他不希望同时播放两首歌曲,这是一个全局变量在单线程应用程序中强制执行的。但与往常一样,It Depends(TM) 取决于许多项目限制和细节。
    • 为什么使用全局变量而不是 self.playing 这样在 __init__() 中初始化的 MainFrame 实例变量?
    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2013-07-13
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多