0

我目前有这段代码,如果按下 ToggleButton 我想让它说

ToggleButton was pressed

然后说明 ToggleButton 是打开还是关闭(默认情况下它是打开的,如果按下按钮,它将被关闭)我想通过状态为 True 或 False 来执行此操作,但我不知道该怎么做这。任何帮助,将不胜感激

class Button(object):

    def __init__(self, text = "button"):
        self.label = text

    def press(self):
        print("{0} was pressed".format(self.label))
class ToggleButton(Button):

   def __init__(self, text="ToggleButton", state=True):
        self.label = text

例如我想要

b = ToggleButton()
b.press()

返回:

ToggleButton was pressed
ToggleButton is now OFF

谢谢!

4

2 回答 2

1

只需添加一个self.state变量:

class ToggleButton(Button):
    def __init__(self, text="ToggleButton", state=True):
        super(ToggleButton, self).__init__(text) 
        self.state = state

    def press(self):
        super(ToggleButton, self).press()
        self.state = not self.state
        print('ToggleButton is now', 'ON' if self.state else 'OFF')
于 2013-05-24T02:22:29.623 回答
0

我认为其他答案还没有完全回答你的问题,所以我会试一试。您已经很好地设置了类层次结构;您现在需要做的是覆盖press处理新数据的方法(切换当前状态)。这很简单!考虑以下类:

class ToggleButton(Button):
    def __init__(self, text="ToggleButton", state=True):
        self.label = text
        self.state = state

    def press(self):
        # Call the superclass press() method
        # Note that pre-Python 3, the call needs to be super(ToggleButton,self)
        super().press()

        # Toggle state
        self.state = not self.state

        # Print current state
        print('{0} is now {1}'.format(self.label,'ON' if self.state else 'OFF'))

press方法只做三件事:

  • 首先,它调用press超类(Button)的方法。这可以防止您必须复制代码以打印“按钮被按下”,或者您可能最终放入基Button类的任何其他代码!
  • 其次,它切换当前状态。这部分不需要过多解释!
  • 最后,它会打印出有关按钮新状态的消息。

这里的所有都是它的!我希望这可以为您清除一些过程。

于 2013-05-24T02:58:53.893 回答