【发布时间】:2014-11-16 06:37:03
【问题描述】:
在我的应用程序中,我有多个屏幕。每个屏幕对应一个类。现在我想在另一个屏幕上显示在某个类(屏幕)中计算的属性。以下是概述我的问题的简化示例。在 WordComprehension 类中,每次按下按钮时,NumericProperty count_r 都会递增。现在,我想在 ScoreScreen 中显示这个计算的结果。感谢您的建议。 这是.py:
import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.properties import ObjectProperty
from kivy.properties import NumericProperty
class AppScreen(FloatLayout):
app = ObjectProperty(None)
class MainMenu(AppScreen):
pass
class ScoreScreen(AppScreen):
score = NumericProperty(0)
def get_score(self):
wordcomp = WordComprehension()
self.score = wordcomp.count_r
class WordComprehension(AppScreen):
count_r = NumericProperty(0)
count_w = NumericProperty(0)
def do_something(self):
self.count_r += 1
class InterfaceApp(App):
def build(self):
self.screens = {}
self.screens["wordcomp"] = WordComprehension(app=self)
self.screens["menu"] = MainMenu(app=self)
self.screens["score"] = ScoreScreen(app=self)
self.root = FloatLayout()
self.goto_screen("menu")
return self.root
def goto_screen(self, screen_name):
self.root.clear_widgets()
self.root.add_widget(self.screens[screen_name])
if __name__ == "__main__":
InterfaceApp().run()
和.kv:
#:kivy 1.8.0
<MainMenu>:
BoxLayout:
orientation: 'vertical'
Label:
text: "Choose Category"
font_size: 30
Button:
text: 'Word Comprehension'
on_press: root.app.goto_screen("wordcomp")
Button:
text: 'Highscore'
on_press: root.app.goto_screen("score")
disabled: False
<ScoreScreen>:
BoxLayout:
orientation: 'vertical'
Button:
text: 'get score'
on_press: root.get_score()
Label:
text: "Word Comprehension right answers:" + str(root.score)
Button:
text: 'Main Menu'
on_release: root.app.goto_screen("menu")
<WordComprehension>:
BoxLayout:
orientation: 'vertical'
Label:
text: str(root.count_r)
Button:
text: 'Do something'
on_release: root.do_something()
Button:
text: 'Menu'
on_press: root.app.goto_screen("menu")
【问题讨论】:
标签: python properties kivy