繁体   English   中英

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

[英]Kivy: bind two methods to be called one after the other

我有一个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__() <overridden method>()

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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM