【发布时间】:2021-02-28 16:05:34
【问题描述】:
您好,我对 kivy python 编程非常陌生。我已经为这个问题头疼了 3 天。如果有人可以帮助我,我将不胜感激。
基本上我有一个名为“SCORE”的变量。在第一个屏幕上,我有 2 个按钮。一个名为“更新”的按钮将 SCORE 的值增加 5,第二个名为“下一步”的按钮将我的应用程序切换到下一个屏幕。
我的问题:切换到第二个屏幕后,有一个标签,我想在转换到此屏幕后立即显示变量 SCORE 的当前值。我无法做到这一点,我唯一能做的就是在点击更新按钮后进行评分更新,但我想在点击更新按钮之前正确显示它。 我应该在我的类 Screen2 中为参数 score = '' 而不是空字符串输入我的 python 代码以正确加载上一个屏幕的值?
我尝试了全局变量,objectProperties 似乎没有解决我的问题。 感谢您的任何回答或帮助。
python 代码:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_file('design.kv')
class Screen1(Screen):
app = App.get_running_app()
def update_score(self):
app = App.get_running_app()
app.SCORE += 5
self.ids.score.text = 'Score: ' + str(app.SCORE)
def next(self):
self.manager.current = 'screen2'
class Screen2(Screen):
score = ''
def update_score(self):
app = App.get_running_app()
app.SCORE += 5
self.ids.score.text = 'Score: ' + str(app.SCORE)
def next(self):
self.manager.current = 'screen2'
class RootWidget(ScreenManager):
pass
class MyApp(App):
SCORE = 0
def build(self):
return RootWidget()
if __name__ == '__main__':
MyApp().run()
kivy 文件:
<Screen1>:
GridLayout:
cols:1
width: root.width
height: root.height
padding: 20
spacing: 10
GridLayout:
cols:1
Label:
id: score
text: 'Score: 0'
GridLayout:
cols:2
Button:
text: 'Update'
on_release: root.update_score()
Button:
text: 'Next'
on_release: root.next()
<Screen2>:
GridLayout:
cols:1
width: root.width
height: root.height
padding: 20
spacing: 10
GridLayout:
cols:1
Label:
id:score
text: f'Level: {root.score}'
GridLayout:
cols:2
Button:
text: 'Update'
on_release: root.update_score()
Button:
text: 'Next'
on_release: root.next()
<RootWidget>:
Screen1:
id: screen1
name: 'screen1'
Screen2:
id: screen2
name: 'screen2'
【问题讨论】:
标签: python-3.x kivy