Python:获取动态TextInput的id

时间:2018-05-11 06:39:06

标签: python-2.7 kivy

我正在使用python-2.7kivy。我运行test.py,然后屏幕看起来像附加图片。当我点击ok按钮时,我正在尝试使用此代码获取id TextInput。 / p>

for row in reversed(rows.children):
    for ch in reversed(row.children):
        if isinstance(ch, TextInput):
            print(ch.id)
            if ch.text == "" and ch.id=='test1':
                print("TextInput is required")
                ch.focus = True
                break;


print(ch.id)显示None。有人可以告诉我如何获取textInput的id吗? 如果我可以获得id,那么我可以忽略value2的空白值。
enter image description here

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 StringProperty
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button

Window.size = (450, 525)


class display(Screen):

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

    def insert(self):

        values = []
        rows = self.ids.rows

        for row in reversed(rows.children):
            for ch in reversed(row.children):
                if isinstance(ch, TextInput):
                    print(ch.id)
                    if ch.text == "" and ch.id=='test1':
                        print("TextInput is required")
                        ch.focus = True
                        break;

class Row(BoxLayout):
    button_text = StringProperty("")

    def count_row(self):
        print('count row')


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):
        return self.root

test().run()

test.kv

<Row>:
    test1 : test1
    test2 : test2
    orientation: "horizontal"
    spacing: 0, 5

    Button:
        text: root.button_text
        size_hint_x: .2

    TextInput:
        id : test1
        size_hint_x: .4

    TextInput:
        id : test2
        size_hint_x: .4
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: .4
                text: "Value1"
                valign: 'bottom'
            Label:
                size_hint_x: .4
                text: "Value2"
                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.insert()

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

0 个答案:

没有答案