[英]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.