如何解决如何从 Kivy 中经常更新的列表中创建动态标签列表
我正在尝试构建一个包含多列数据的结构,这些数据列将被更新并且必须一起滚动。
整个应用程序有多个页面,等等。它的标签构建部分似乎可以正常工作,因为它将“hello world”放在页面的右侧部分。但是,即使我使用的是“索引”属性,它似乎也是在彼此之上填充所有数据。以下是 py 和 kv 文件的一些片段:
class RV(FloatLayout):
def re_build(self):
label_list = [Label(text = "Label {}".format(x)) for x in range(20)]
for count,x in enumerate(label_list):
self.add_widget(Label(text='Hello World'),index = count)'
class MainScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
class TestApp(App):
def build(self):
return ScreenManagement()
if __name__ == '__main__':
# Here the class MyApp is initialized
# and its run() method called.
TestApp().run()
<ScreenManagement>:
padding: 10
MainScreen:
id: main_screen
name: 'main_screen'
<MainScreen>:
GridLayout:
rows:3
cols:1
Button:
size_hint: 1,None
height: 50
text: "just setting up"
on_press:
root.ids.rv.re_build()
RV:
id: rv
GridLayout:
rows:3
cols:2
size_hint : None,None
CheckBox:
active:False
Label:
text: 'item 1'
CheckBox:
active:False
Label:
text: 'item 2'
CheckBox:
active:False
Label:
text: 'item 3'
感谢任何帮助
解决方法
您的代码:
self.add_widget(Label(text='Hello World'),index = count)
正在将 Label
添加到您的 RV
类中,它是一个 FloatLayout
。在 FloatLayout
中,index
调用中的 add_widget()
对 Label
的位置没有影响,它只影响绘制标签的顺序。尝试使用不同的 Layout
作为您的 RV
类的基类。将根据 index
定位其孩子的一些示例是 GridLayout
、BoxLayout
和 StackLayout
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。