在Switch处于活动状态时每30秒调用一个python kivy回调?



我正在用python kivy构建一个应用程序。

我有一个开关小部件(switch1),当它处于活动状态时,我想每30秒打印'Hello world'.

在我的尝试下面,我首先定义一个回调(switch1_callback)打印'Hello world'。然后我用Clock.schedule_interval()定义另一个调用switch1_callback的回调(timely_switch1_callback)。timely_switch1_callbackswitch1绑定

我一直得到一个错误信息(TypeError: switch1_callback() takes 1 positional argument but 2 were given).

谢谢你的帮助!

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics import Rectangle, Color
from kivy.clock import Clock
kv = '''
<PrettySwitch>:
size_hint: None, None
size: 300, 300
canvas:
Color:
rgba: 0, 0, 1, 1    
Rectangle:
size: self.size  
pos: self.pos
Switch:
id: switch1                 
pos: 150, 150
size_hint: None, None
size: 100, 50
active: True   
on_active: root.timely_switch1_callback()

'''
class PrettySwitch(FloatLayout):
def switch1_callback(self):
print('Hello world')
def timely_switch1_callback(self):
Clock.schedule_interval(self.switch1_callback, 30)

class SwitchApp(App):
def build(self):
Builder.load_string(kv)
return PrettySwitch()
if __name__ == '__main__':
SwitchApp().run()

只需将switch1_callback()的定义更改为接受2个参数:

def switch1_callback(self, dt):

dt参数由Clock.schedule_interval()添加。

相关内容

  • 没有找到相关文章

最新更新