Python / Kivy:如何将.kv文件中的TextBox值从一个类传递到另一个类

时间:2017-12-28 13:54:48

标签: python python-3.x python-2.7 kivy kivy-language

谁能告诉我? 我有两个文件test.py和test.kv.
 我有一个id:state的textBox。如何在root.get_value(state.text)中传递state.text值并在def get_value

的函数中获取值

test.py

from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import BooleanProperty, ListProperty, StringProperty, ObjectProperty, NumericProperty

Window.size = (450, 525)


class display(Screen):
    state = ObjectProperty(None)

    def add_more(self):
        self.ids.rows.add_row()

    def get_value(self,arg1):
        print(arg1)



class Row(BoxLayout):
    button_text = StringProperty("")
    state = ObjectProperty(None)


class Rows(BoxLayout):
    orientation = "vertical"
    row_count = 0

    def __init__(self, **kwargs):
        super(Rows, self).__init__(**kwargs)
        self.add_row()

    def add_row(self):
        self.row_count += 1
        self.add_widget(Row(button_text=str(self.row_count)))


class test(App):

    def build(self):
        self.root = Builder.load_file('test.kv')
        return self.root

if __name__ == '__main__':
    test().run()

test.kv

<Row>:
    state : state
    orientation: "horizontal"
    spacing: 0, 5

    Button:
        text: root.button_text
        size_hint_x: .2

    TextInput:
        text : "Test1"
        size_hint_x: .8
        id : state


display:

    BoxLayout:
        orientation: "vertical"
        padding : 20, 20

        BoxLayout:
            orientation: "horizontal"

            Button:
                size_hint_x: .2
                text: "+Add More"
                valign: 'bottom'
                on_press: root.add_more()


        BoxLayout:
            orientation: "horizontal"

            Label:
                size_hint_x: .2
                text: "SN"
                valign: 'bottom'

            Label:
                size_hint_x: .8
                text: "Value"
                valign: 'bottom'


        Rows:
            id: rows

        BoxLayout:
            orientation: "horizontal"
            padding : 10, 0
            spacing: 10, 10
            size_hint: .5, .7
            pos_hint: {'x': .25, 'y':.25}

            Button:
                text: 'Ok'
                on_release:
                    root.get_value(state.text)

            Button:
                text: 'Cancel'
                on_release: root.dismiss()

0 个答案:

没有答案