我正在使用带有python的Kivy库开发应用程序。
在应用程序中我有两个几乎完全相同的屏幕:它们都包含列表,它们具有大致相同的布局(上面的按钮行,然后是列表,然后是下面的按钮行)。
最大的区别是每个屏幕上的按钮数量:屏幕1是4个按钮,屏幕2是3个按钮。根据屏幕的不同,按钮会有不同的行为和文字。
有没有办法使用相同的Kivy定义(下面显示的屏幕1中的示例),但是在我声明屏幕时动态更改添加的按钮?
编辑:从我的python文件中添加了示例代码,请参阅下面的Kivy示例。
#:kivy 1.8.0
#: import ListAdapter kivy.adapters.listadapter.ListAdapter
#: import ListItemButton kivy.uix.listview.ListItemButton
<ListScreen>:
BoxLayout:
orientation: 'vertical'
BoxLayout:
size_hint_y: .1
Button:
text: 'Save'
Button:
text: 'Load'
Button:
text: 'New'
Button:
text: 'New Search'
ListView:
size_hint_y: .8
adapter:
ListAdapter(data=root.itemList,
selection_mode='single',
allow_empty_selection=False,
cls=ListItemButton)
canvas.before:
Color:
rgb: 1,1,1
Rectangle:
pos: self.pos
size: self.size
BoxLayout:
size_hint_y: .1
Button:
text: 'Add'
Button:
text: 'Remove'
Button:
text: 'View'
Button:
text: 'View Search'
on_press:
root.manager.transition.direction = 'left'
root.manager.current = 'results'
class ListScreen(Screen):
itemList = ListProperty([])
selected_value = StringProperty()
def change(self,change):
self.selected_value = 'Selected: {}'.format(change.text)
sm = ScreenManager()
sm.add_widget(ListScreen(name='list'))
sm.add_widget(ListScreen(name='results'))