关于一个按钮实现问题~~

关于一个按钮实现问题~~

就是像播放器 那样 的 开始按钮 如果和实现呢 按一下就开始 再按一下就结束暂停 如何每按一次实现两次不同的事件
已解决
下面是这个控件
Toggle Button和普通的按钮在外观上差不多一样,不过你按一下就知道有什么不同了:它有两种状态(一凸一 )。你按一下,它的状态就变化一下。

Toggle Button是Check Button和Radio Button的基础,比如许多Toggle Button的函数都被Check Button和Radio Button继承了。详细情况到时候再说。

下面是建立一个Toggle Button:

  toggle_button = gtk.ToggleButton(label=None)
很明显,这和前面的普通按钮几乎一样。

那么怎样才能知道这种有两种状态的按钮在某一时候处在什么状态呢?就是用get_active()。这种按钮发出的“toggled”事件是我们用得着的,在这个事件的callback中使用get_active()就可以检查按钮的状态了。 这个callback大概是这个样子:

  def toggle_button_callback(widget, data):
      if widget.get_active():
          # If control reaches here, the toggle button is down
      else:
          # If control reaches here, the toggle button is up
如果要强行设置这种双状态按钮的状态,我们可以这样:

  toggle_button.set_active(is_active)
当把is_active定为False或是True时,按钮的状态就被设为弹起或是按下。默认情况下,按钮是弹起的。

当我们用set_active()设定状态时,按钮会发出“clicked”和“toggled”事件。

togglebutton.py示范了Toggle Button的一般使用方法。
不用toggle也可以,自已记录一个状态,或最简单的就是判断按钮的文字是开始还是暂停就行了。


QUOTE:
原帖由 limodou 于 2008-2-25 17:15 发表
不用toggle也可以,自已记录一个状态,或最简单的就是判断按钮的文字是开始还是暂停就行了。

好像不能吧 比如 开始初始设置按钮的文字为 RUN  我按点击一下 设定按钮的字为 STOP 如何再点击一下又能变为 RUN 呢
wx.Button有GetLabelText()这个方法可以得到按钮上的文字,那么就可以判断了.
Python可以直接比较文本,中文也可以.


QUOTE:
原帖由 thinkc 于 2008-2-25 22:39 发表
wx.Button有GetLabelText()这个方法可以得到按钮上的文字,那么就可以判断了.
Python可以直接比较文本,中文也可以.

这个我知道
问题是 假如初始状态按钮文字为STOP
           点击一下按钮变成RUN  
         再点击一下会变成STOP吗? 这不是同一个事件驱动了两件不同的事情吗 不符合逻辑吧