Android 如何在Kivy中重置小部件

Android 如何在Kivy中重置小部件,android,python,kivy,Android,Python,Kivy,我有一个非常简单的应用程序,有一个按钮和一个标签。标签的初始值为0。每次按下按钮时,标签增加1。当标签变为3时,我会显示一个带有“再次播放”按钮的弹出窗口 现在,我想将标签重置为0 我的尝试: #!/usr/bin/kivy import kivy kivy.require('1.7.2') from random import random from kivy.app import App from kivy.lang import Builder from kivy.uix.screenm

我有一个非常简单的应用程序,有一个按钮和一个标签。标签的初始值为0。每次按下按钮时,标签增加1。当标签变为3时,我会显示一个带有“再次播放”按钮的弹出窗口

现在,我想将标签重置为0

我的尝试:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

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

s=0

def my_callback(dt):
    mypopup = MyPopup()
    return mypopup.show_popup()

def go_to_main(self):
    sm.current = 'menu'
    global s
    s=0

def test(self):
    global s
    s=0
    print s

class MyPopup(Popup): 
    def show_popup(self):
        mytext= str(s)
        content = BoxLayout(orientation="vertical")
        content.add_widget(Label(text="Game Over", font_size=20))
        content.add_widget(Label(text="Score", font_size=20))
        content.add_widget(Label(text=mytext, font_size=20))
        mybutton_cancel = Button(text="Play Again", size_hint_y=None, height=40)
        content.add_widget(mybutton_cancel)
        mypopup = Popup(content = content,              
            title = "oops",     
            auto_dismiss = False,         
            size_hint = (.5, .5))
        mybutton_cancel.bind(on_release=mypopup.dismiss)
        mybutton_cancel.bind(on_release=test) 
        mypopup.open()

Builder.load_string("""
<MenuScreen>:
    GridLayout:
        cols: 1
        Button:
            id: btn_0
            text: "press me to increase score"
            on_press: root.val0()
        Label:
            id: score
            text:root.get_score()
""")

class MenuScreen(Screen):
    def get_score(self):
        return str(s)
    #on_click of button code
    def val0(self):
        global s
        s=s+1
        self.ids['score'].text=str(s)
        if(s==3):
            Clock.schedule_once(my_callback, 0)

sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))

class TestApp(App):

    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()
#/usr/bin/kivy
进口克维
kivy.require('1.7.2')
从随机导入随机
从kivy.app导入应用程序
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager,屏幕
从kivy.uix.gridlayout导入gridlayout
从kivy.uix.boxlayout导入boxlayout
从kivy.uix.button导入按钮
从kivy.uix.label导入标签
从kivy.uix.popup导入弹出窗口
从随机导入随机
从随机进口选择
从kivy.properties导入StringProperty
导入时间
从kivy.clock导入时钟
s=0
def my_回调(dt):
mypopup=mypopup()
返回mypopup.show_popup()
def go_至_干管(自):
sm.current='菜单'
全球s
s=0
def测试(自我):
全球s
s=0
印刷品
类MyPopup(弹出窗口):
def显示_弹出窗口(自身):
mytext=str(s)
内容=框布局(方向=“垂直”)
内容。添加小部件(标签(text=“游戏结束”,font\u size=20))
内容。添加小部件(标签(text=“Score”,font\u size=20))
添加小部件(标签(text=mytext,font\u size=20))
mybutton\u cancel=按钮(text=“再次播放”,大小\u提示\u y=无,高度=40)
content.add\u小部件(mybutton\u cancel)
mypopup=弹出窗口(内容=内容,
title=“oops”,
自动退出=错误,
大小提示=(.5,.5))
mybutton\u cancel.bind(发布时=mypopup.disease)
mybutton\u cancel.bind(发布时=测试)
mypopup.open()
生成器。加载\u字符串(“”)
:
网格布局:
科尔斯:1
按钮:
id:btn_0
文字:“按我增加分数”
按:root.val0()
标签:
id:分数
文本:root.get_score()
""")
类菜单屏幕(屏幕):
def get_分数(自我):
返回str(s)
#单击按钮代码时
def val0(自身):
全球s
s=s+1
self.ids['score'].text=str
如果(s==3):
时钟。计划一次(我的时钟回调,0)
sm=屏幕管理器()
sm.add_小部件(菜单浏览(name='menu'))
类TestApp(应用程序):
def生成(自):
返回sm
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
TestApp().run()

它成功重置为0,我将其打印在控制台上进行检查,但仍显示为3。按下按钮时,更改为1。我想将其显示为0而不是3。

抓住您的
菜单屏幕
对象

# sm.add_widget(MenuScreen(name='menu')) # Replace this line with these two:
menu_screen = MenuScreen(name='menu')
sm.add_widget(menu_screen)
然后,在
测试
功能中,调用
菜单屏幕
val0
功能

def test(self):
    global s
    s=-1
    menu_screen.val0()

如果答案对你有帮助,你也可以投票:)完成了,我不知道。我觉得绿色的蜱虫就足够了。