在Kivy的课程之间传递信息

时间:2015-12-28 09:37:33

标签: python kivy

我在Kivy有一个基本的应用程序,每个屏幕都有一个类。我想让用户在一个屏幕上输入一些文字,然后在另一个屏幕上的标签中显示。

我已经浏览了所有相似的帖子,但似乎无法正常工作。

两个类EnterSentences和Review都有ObjectProperties。有没有办法用bind连接这些?或者我是否需要完全不同地构建事物?

任何帮助非常感谢。这是.py文件

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty

class MainMenu(BoxLayout):

    def enter_sentences_button(self):
        self.clear_widgets()
        self.add_widget(EnterSentences())

    def review_button(self):
        self.clear_widgets()
        self.add_widget(Review())

    def settings_button(self):
        pass


class EnterSentences(BoxLayout):
    search_box = ObjectProperty()
    def main_menu(self):
        self.clear_widgets()
        self.add_widget(MainMenu())


class Review(BoxLayout):
    sentence = ObjectProperty()

class NewApp(App):
    pass


if __name__ == "__main__":
    NewApp().run()

和.kv文件:

MainMenu

<MainMenu>:
    orientation: 'vertical'
    Label:
        text: "Welcome to your Flash Card App!"
        size_hint_y: 5
    BoxLayout:
        size_hint_y: 1
        orientation: "horizontal"
        Button:
            text: "Enter sentences"
            on_press: root.enter_sentences_button()
        Button:
            text: "Review"
            on_press: root.review_button()
        Button:
            text: "Settings"


<EnterSentences>:
    search_box: enter_sentence
    orientation: "vertical"
    Label:
        text: "Enter your sentences here:"
        size_hint_y: 4
    TextInput:
        id: enter_sentence
    TextInput:
    TextInput:
    BoxLayout:
        orientation: 'horizontal'
        Button:
            text: 'Main Menu'
            on_press: root.main_menu()
        Label:
            text: ''


<Review>:
    orientation: 'vertical'
    Label:
        size_hint_y: 4
        text: root.search_box
    TextInput:
        size_hint_y: 1

1 个答案:

答案 0 :(得分:0)

您只需要更改kv文件。您可以将3个TextInputs中的文本添加到可从整个应用程序中读取的3个变量中:

      TextInput:
+         on_text: app.sentence1=self.text
          id: enter_sentence
      TextInput:
+         on_text: app.sentence2=self.text
      TextInput:
+         on_text: app.sentence3=self.text

然后您可以访问Review中的新变量:

<Review>:
    orientation: 'vertical'
    Label:
        size_hint_y: 4
        text: app.sentence1 + "\n" + app.sentence2 + "\n" + app.sentence3
    TextInput:
        size_hint_y: 1