0
我试图让用户输入一个时间,当他们启动计时器时,用户插入的时间将从该输入时间开始倒计时。函数只需要2个参数(1给出)kivy定时器
但是我得到的错误updatetimer()究竟需要两个参数(1给出)
什么是从输入返回值,以便它可以在整个脚本的其余部分中使用的最佳方法。
这是我的工作代码:
#!/usr/bin/kivy
import kivy
from random import random
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from random import random
from random import choice
from kivy.properties import StringProperty
import time
from kivy.clock import Clock
from functools import partial
check=0
Builder.load_string("""
<MenuScreen>:
GridLayout:
cols: 1
TextInput:
id: ti
Button:
text: 'do something!'
on_press: root.updatetimer(ti.text)
Button:
id: btn_0
text: "press me to start timer"
on_press: root.val0()
Label:
text:'timer'
Label:
id: timer
text:str(30)
""")
class MenuScreen(Screen):
def updatetimer(self,timeup):
return timeup
def val0(self):
global check
if(check==0):
check=check+1
Clock.schedule_interval(partial(my_callback, self), 1)
test = MenuScreen()
def my_callback(screen, dt):
t = test.updatetimer()
t -= 1
screen.ids.timer.text = str(t)
sm = ScreenManager()
menu_screen = MenuScreen(name='menu')
sm.add_widget(menu_screen)
class TestApp(App):
def build(self):
return sm
预先感谢您的建议
在你的函数'my_callback(屏幕,DT)'你有下面的语句:'T =试验。 updatetimer()'。对象'test'被认为是第一个参数('self'),但你仍然有'timeup'。所以错误是有道理的 – VlassisFo
什么应该t = test.updatetimer()被改变为使得t等于用户输入的时间? – fastmhc