代码之家  ›  专栏  ›  技术社区  ›  Nirdesh Kumawat

Python:计数动态行

  •  1
  • Nirdesh Kumawat  · 技术社区  · 7 年前

    我正在使用 python-2.7 kivy 1.10.0 。我正在使用添加动态行 +Add More 按钮
    我正在使用 on_text 事件进入每个动态 TextInput 有人能帮我数数吗 dynamic 一行 on\u文本 事件
    在此图像中,您可以看到 2 rows .当我输入任何 文本输入框 然后 on\u文本 事件调用。此时如何计算总行数?

    enter image description here

    测验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
    
    Window.size = (450, 525)
    
    
    class display(Screen):
    
        def add_more(self):
            self.ids.rows.add_row()
    
    
    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):
            #self.root = Builder.load_string(KV)
            return self.root
    
    
    test().run()
    

    测验千伏

    <Row>:
        orientation: "horizontal"
        spacing: 0, 5
    
        Button:
            text: root.button_text
            size_hint_x: .2
    
        TextInput:
            size_hint_x: .8
            on_text: root.count_row()
    
    
    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"
    
    
            Rows:
                id: rows
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   eyllanesc Yonghwan Shin    7 年前

    如果希望某个元素通知另一个元素,则必须使用属性 NumericProperty ,并在它们之间创建绑定。

    ...
    class Row(BoxLayout):
        button_text = StringProperty("")
        row_count = NumericProperty(0)
        def count_row(self):
            print('count row', self.row_count)
    
    class Rows(BoxLayout):
        orientation = "vertical"
        row_count = NumericProperty(0)
    
        def __init__(self, **kwargs):
            super(Rows, self).__init__(**kwargs)
            self.add_row()
    
        def add_row(self):
            self.row_count += 1
            row = Row(button_text=str(self.row_count))
            self.add_widget(row)
            row.row_count = self.row_count
            self.bind(row_count= row.setter("row_count"))
    ...