2017-12-19 20 views
0

私はpython/Kivyの新機能です。
私はtest.pyとtest.kyの2つのファイルを持っています。
ここでは、シリアル番号1と2の2つの静的行を使用しています。
誰でも教えてください。 「+追加」ボタンをクリックすると、行のダイナミックを追加するにはどうすればいいですか?2行目はシリアル番号が増えている静的行です。
シリアル番号の増分を使って1から10の行を追加したい。
Python:行動的を追加するには

test.py

import kivy 

from kivy.uix.screenmanager import Screen 
from kivy.app import App 
from kivy.lang import Builder 
from kivy.core.window import Window 

Window.size = (450, 525) 

class display(Screen): 

    def add_more(self): 
     print('test') 

class test(App): 

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


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

test.kv

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' 

     BoxLayout: 
      orientation: "horizontal" 
      spacing: 0, 5 

      Button: 
       text: '1' 
       size_hint_x: .2 

      TextInput: 
       size_hint_x: .8 

     BoxLayout: 
      orientation: "horizontal" 
      spacing: 0, 5 

      Button: 
       text: '2' 
       size_hint_x: .2 

      TextInput: 
       size_hint_x: .8 

     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.dismiss() 

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

誰かが私を助けることができますか?

答えて

2

Rowsのカスタムクラスを作成してから、行を追加する方法があります。
あなたの例を少し変更しました。試してみてください:

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("") 


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 



KV = """ 

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

    Button: 
     text: root.button_text 
     size_hint_x: .2 

    TextInput: 
     size_hint_x: .8 


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.dismiss() 

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

""" 


test().run() 
関連する問題