如何在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.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()

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

米海特

抓住你的MenuScreen物体

# sm.add_widget(MenuScreen(name='menu')) # Replace this line with these two:
menu_screen = MenuScreen(name='menu')
sm.add_widget(menu_screen)

然后,在test函数中,调用您的menu_screen val0函数

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Kivy中防止小部件的大小改变?

来自分类Dev

如何在Kivy中获取小部件/布局的实际大小?

来自分类Dev

如何在Kivy中从一组小部件动态创建纹理?

来自分类Dev

如何在Kivy中获取小部件在其布局中的位置?

来自分类Dev

在kivy中添加小部件

来自分类Dev

如何立即更新Kivy中的小部件?

来自分类Dev

Python中Kivy小部件之间的交互

来自分类Dev

如何在Kivy中添加滚动文本小部件?

来自分类Dev

如何在GtkGrid中对齐小部件

来自分类Dev

在Kivy中启动多个小部件

来自分类Dev

如何在kivy中删除小部件?

来自分类Dev

如何在KIVY中删除小部件(标签,按钮等)

来自分类Dev

如何在Python Kivy中的每个小部件中绘制线条

来自分类Dev

如何在Kivy中固定小部件?(或窗口)

来自分类Dev

如何在Kivy中防止小部件的大小改变?

来自分类Dev

如何在Kivy中从一组小部件动态创建纹理?

来自分类Dev

如何在Kivy中获取小部件在其布局中的位置?

来自分类Dev

在kivy中添加小部件

来自分类Dev

如何在BoxLayout中将kivy小部件相对于其他小部件居中?

来自分类Dev

如何在Kivy中查找小部件占用的区域/顶点?

来自分类Dev

如何在Python中重置Tkinter Text小部件突出显示?

来自分类Dev

在Kivy 1.9.0 RelativeLayout中锚定小部件

来自分类Dev

如何在GtkGrid中对齐小部件

来自分类Dev

如何在Kivy中自动更新小部件上的文本?

来自分类Dev

在 GridLayout 中旋转“复杂”的 kivy 小部件

来自分类Dev

从 Kivy 中的不同小部件获取属性

来自分类Dev

删除 kivy 小部件中的按钮

来自分类Dev

如何使用 kivy 中的弹出窗口小部件更改屏幕?

来自分类Dev

如何在回调时替换 Kivy 小部件?

Related 相关文章

热门标签

归档