稍微修改一下list_simple_in_kv.py以使用ListAdapter而不是{
from kivy.uix.modalview import ModalView
from kivy.uix.listview import ListView
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
from kivy.app import App
#using 'sla'...whatever that means...
Builder.load_string("""
#:import ListItemButton kivy.uix.listview
#:import sla kivy.adapters.listadapter
<ListViewModal>:
ListView:
size_hint: .8, .8
adapter:
sla.ListAdapter(
data=["Item #{0}".format(i) for i in range(100)],
cls=ListItemButton.ListItemButton)
""")
class ListViewModal(ModalView):
def __init__(self, **kwargs):
super(ListViewModal, self).__init__(**kwargs)
class MainView(GridLayout):
def __init__(self, **kwargs):
kwargs['cols'] = 1
super(MainView, self).__init__(**kwargs)
listview_modal = ListViewModal()
self.add_widget(listview_modal)
class TestApp(App):
def build(self):
root = MainView()
return root
if __name__ == '__main__':
TestApp().run()
但是将kv文件改成这样(这种方式与我遇到的其他kv API最为一致)失败了:
^{pr2}$我甚至遇到了this帖子和{a4},说方法2应该在master中工作,但它确实有一个例外:
File "C:\Python27\lib\site-packages\kivy\adapters\adapter.py", line 102, in __init__
raise Exception('adapter: input must include data argument')
Exception: adapter: input must include data argument
我错过了什么?在
提前谢谢。在
ListAdapter不是小部件,因此您无法使用您尝试使用的语法。我认为您可以做的最接近代码的Kivyonic外观的方法如下。注意我改变了进口。这与向画布添加指令的方式类似:
**编辑**
您还更改了
^{pr2}$size_hint
,因此前面的代码看起来与原始代码非常不同。这个看起来像原版。我不确定这个答案,但您没有向
adapter
属性添加任何内容。试试这个:我同意sla.ListAdapter不清楚。通常我们可以直接进入课堂。告诉我这是否有效:
^{pr2}$请注意,我更改了}的导入。
ListItemButton
和{相关问题 更多 >
编程相关推荐