Python Kivy如何实现几乎相同的屏幕

时间:2016-05-05 19:19:32

标签: android python screen kivy

我正在使用带有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'))

0 个答案:

没有答案