我想要这样的东西,但它不起作用
class SomeClass():
def somedelaymethod(self, timearg):
returnedvalue = Clock.schedule_once(self.somescheduledmethod, timearg)
return returnedvalue
def somescheduledmethod(self, dt):
value = something
return value
如何访问计划函数返回的返回值?
答案 0 :(得分:1)
您可以使用可延迟功能(您需要kivyoav)
from kivyoav.delayed import delayable
class SomeClass():
@delayable #<------- !!!
def somedelaymethod(self, timearg):
yield timearg #will cause the wanted delay without making the UI unresponsive
returnedvalue = self.somescheduledmethod()
#do somthing with returnvalue...
def somescheduledmethod(self):
value = something
return value
答案 1 :(得分:0)
使用回调是实现此目的的好方法。类似的东西:
from kivy.app import App
from kivy.uix.label import Label
from kivy.clock import Clock
class MyApp(App):
def build(self):
label = Label(text='Waiting...')
def callback(value):
label.text = "Got {0}".format(value)
Clock.schedule_once(lambda dt: self.somescheduledmethod(callback), 1)
return label
def somescheduledmethod(self, callback):
value = 'something'
callback(value)
if __name__ == "__main__":
MyApp().run()
答案 2 :(得分:0)
将值保存到self
上的实例属性。如果您需要进一步发生,您可以在返回之前执行此操作,或者将该属性设置为Kivy属性。
答案 3 :(得分:-1)
你的班级有括号,不应该这样。这与你的问题没有任何关系,但这很重要。
要访问返回值,您需要创建类的实例,并通过实例运行该函数。
class SomeClass:
#what you wrote goes here
a = SomeClass() #you put parenthesis here, but not above.
print(a.whateverMethodYouWantToUse())
并打印方法的返回值。我希望这回答了你的要求。