Mobile 使用screenmanager时如何在kivy中更新背景法线属性

Mobile 使用screenmanager时如何在kivy中更新背景法线属性,mobile,kivy,Mobile,Kivy,我正在用Kivy制作一个多屏幕游戏。在主屏幕上,我们有一组按钮,每个按钮的背景法线属性都设置为png图像。每个按钮都指向一个单独的屏幕,用户在该屏幕上回答问题。回答问题后,问题屏幕将引导用户返回主屏幕。我们要做的是更新按钮的颜色(使用不同的png文件作为背景),以向用户表明问题已经得到了回答 现在,我们在主屏幕中创建了一个方法,当背景屏幕中的问题得到正确回答时,该方法会更改背景颜色。通过打印到终端,我们能够确认颜色已经改变。但是,当应用程序返回主屏幕时,颜色没有改变。我们认为这是因为当用户返回主

我正在用Kivy制作一个多屏幕游戏。在主屏幕上,我们有一组按钮,每个按钮的背景法线属性都设置为png图像。每个按钮都指向一个单独的屏幕,用户在该屏幕上回答问题。回答问题后,问题屏幕将引导用户返回主屏幕。我们要做的是更新按钮的颜色(使用不同的png文件作为背景),以向用户表明问题已经得到了回答

现在,我们在主屏幕中创建了一个方法,当背景屏幕中的问题得到正确回答时,该方法会更改背景颜色。通过打印到终端,我们能够确认颜色已经改变。但是,当应用程序返回主屏幕时,颜色没有改变。我们认为这是因为当用户返回主屏幕时,主屏幕正在重置。如何使主屏幕上的按钮颜色不仅取决于在单独屏幕上回答的问题,而且是永久性的


谢谢

屏幕管理器中
保留对使用
root.question按下的按钮的引用。你可以从屏幕上访问它。您可以使用自己的图像或附加的图像

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen


Builder.load_string("""
<MyScreenManager>
    Screen:
        name: 'questionary'
        BoxLayout:
            orientation: 'vertical'
            Button:
                text: 'Question 1'
                on_press: root.question = self; root.current = 'question_1'
                background_normal: 'answered.png'
            Button:
                text: 'Question 2'
                on_press: root.question = self; root.current = 'question_1'
                background_normal: 'answered.png'
    Screen:
        name: 'question_1'
        BoxLayout:
            orientation: 'vertical'
            Label:
                text: 'Are you going to answer this question?'
            Button:
                text: 'Yes'
                on_press: root.question.background_normal = 'not_answered.png'; root.current = 'questionary'
""")


class MyScreenManager(ScreenManager):
    pass

class TestApp(App):
    def build(self):
        return MyScreenManager()

if __name__ == '__main__':
    TestApp().run()
从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager,屏幕
生成器。加载\u字符串(“”)
屏幕:
名称:“提问者”
盒子布局:
方向:“垂直”
按钮:
正文:“问题1”
按:root.question=self;root.current='question\u 1'
背景_正常:“responsed.png”
按钮:
正文:“问题2”
按:root.question=self;root.current='question\u 1'
背景_正常:“responsed.png”
屏幕:
姓名:“问题1”
盒子布局:
方向:“垂直”
标签:
文本:“你打算回答这个问题吗?”
按钮:
文字:“是”
按:root.question.background\u normal='not\u answered.png';root.current='questionary'
""")
类MyScreenManager(屏幕管理器):
通过
类TestApp(应用程序):
def生成(自):
返回MyScreenManager()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
TestApp().run()

听起来你的总体想法是正确的,但不清楚为什么你自己的改变不会持续下去。你能举一个简单的例子来说明你认为应该怎么做吗?谢谢你!这正是我们要找的