Kivy:绑定两个方法一个接一个地调用



我有一个C类,有两个方法,a和b,我希望其中一个(b(总是在另一个(a(之后调用

class C(Widget) :
 def __init__(self) :
  super(C, self).__init__() 
  self.bind(a=self.b)  # something like this 
 def a(self) : pass
 def b(self) : pass

如何?

从 a 调用 b 怎么样?

def a(self) :
    #some code
    self.b()

我不太记得为什么它不能通过绑定工作,但我认为它与使用不同的对象有关,例如绑定到未执行的旧方法或某种意义上的东西。

这就是super()来救援的地方。你看,super()不仅用于调用你继承的类__init__(),它还具有其他目的。

我刚刚用<overridden method>()替换了__init__()

from kivy.base import runTouchApp
from kivy.uix.button import Button
class MyBase(Button):
    def overridden(self, *args):
        self.stable()
    def stable(self, *args):
        print('stable')
class MyButton(MyBase):
    def __init__(self, **kwargs):
        super(MyButton, self).__init__(**kwargs)
        self.bind(on_release=self.overridden)
    def overridden(self, *args):
        # run before overriden stuff
        super(MyButton, self).overridden()
        print('new overridden')
        # run after overridden stuff
        super(MyButton, self).overridden()
runTouchApp(MyButton())

最新更新