【发布时间】:2019-05-23 23:19:47
【问题描述】:
类似的帖子实际上无法帮助我。因此发布我自己的场景。我在其他布局中有一个网格布局区域。现在这个网格的行数是动态的。这是一个数据表。每次用户按下添加按钮时,都需要添加一个新行。当列表增长到超过布局大小时,滚动条就会出现。
我在下面的代码中复制了核心部分。我曾尝试使用回收视图,但未能成功。因此,现在我正在尝试解决的算法是 -
-
当按下添加按钮时,调用一个 python 函数,该函数收集接下来 4 个单元格的数据并在网格布局中添加 4 个按钮。
-
当 Grid 行达到 'x' 值上方时,会出现滚动条。
mydatatable.py
import os
os.environ['KIVY_GL_BACKEND'] = 'gl'
import kivy
kivy.require('1.11.0')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.properties import NumericProperty
class DataTable(BoxLayout):
pass
class MyTableApp(App):
rowNumber = NumericProperty(2)
def build(self):
return DataTable()
def add_a_row(self):
self.rowNumber += 1
if __name__ == '__main__':
MyTableApp().run()
mytable.kv
<DataTable>:
orientation : 'vertical'
Button:
text : ""
#----------------------------------
BoxLayout:
orientation : 'horizontal'
Button:
text : ""
#----------------------------------
BoxLayout:
orientation : 'vertical'
GridLayout:
cols : 4
size_hint: 1.0, app.rowNumber*0.15
Button:
text: "name"
size_hint: 1, app.rowNumber
Button:
text: "type"
size_hint: 1, app.rowNumber
Button:
text: "content"
size_hint: 1, app.rowNumber
Button:
text: "xyz"
size_hint: 1, app.rowNumber
Button:
text: "name"
size_hint: 1, app.rowNumber
Button:
text: "type"
size_hint: 1, app.rowNumber
Button:
text: "content"
size_hint: 1, app.rowNumber
Button:
text: "xyz"
size_hint: 1, app.rowNumber
Label:
size_hint: 1.0, (1.0 - (app.rowNumber-1)*0.15)
#----------------------------------
Button:
text : ""
#----------------------------------
Button:
text: "Add"
on_release:
app.add_a_row()
或者如果有更好的方法来实现我正在寻找的东西,请提出建议。提前感谢您的支持。
【问题讨论】: