python如何做动态加载_Python:如何动态添加行

I am new to python/Kivy.

I have two files test.py and test.ky.

Now I am using two static row with serial number 1 and 2.

Can anyone tell me?

How to add row dynamic when click on '+add more' button.Now 2 row shows which are static row with serial number increment.

I want add row dynamic 1 to 10 with serial number increment.

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

Can someone help me?

解决方案

You can make a custom class for Row and Rows, then have a method adding rows.

I modified your example a bit. Try this:

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 = """

:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值