如何添加侧边栏到kivy Android应用程序?

时间:2018-04-09 11:13:48

标签: python-3.x kivy kivy-language

我想要一个侧边栏来显示帐户详细信息,例如:用户名,个人资料等。所以我在我的kv文件中制定了一个规则,我怎么能得到这个以及我做了什么才能得到这个,这也是如下:提前谢谢而且总是欢迎这个程序提示。 这是我的main.py

import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.animation import Animation

class MainScreen(FloatLayout):

    def menu_action(self):
        self.add_widget(SideBar())

class SideBar(FloatLayout):

    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            print('inside side')
        else:
            print('outside side')

class testApp(App):

    def build(self):
        return MainScreen()

if __name__ == '__main__':
    AccountMaintainerApp().run()

这是我的kv文件test.kv

<MainScreen>:
    canvas.before:
        Rectangle:
            size: root.size
            source: 'static/images/back.jpg'
    ActionBar:
        pos_hint: {'top':1}
        background_color: 0, 0, 0, .1
        ActionView:
            use_separator: True
            ActionPrevious:
                app_icon: 'static/images/account.png'
                title: 'Account Maintainer'
                color: 0, 0, 0, 0 
                with_previous: False
            ActionButton:
                id: menu
                icon: 'static/images/menu.png'
                on_press: root.menu_action()

<SideBar>:
    canvas.before:
        Color:
            rgba: 0, 0, 0, .6 
        Rectangle:
            size: self.size
            pos: self.pos
    size_hint: (.8, 1)
    pos_hint: {'right': 1}
  

点击菜单按钮侧边栏打开当我点击菜单按钮时打开一个新的侧栏   我想禁用它。我怎么能得到这个?告诉我,如果没有   理解//

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您只需要在第一次单击菜单按钮时打开侧边栏。有几种方法可以做到这一点。一个是跟踪边栏是否已经打开,并且不打开第二个边栏。这可以通过更改MainScreen课程来完成,如下所示:

class MainScreen(FloatLayout):
    def __init__(self):
        super(MainScreen, self).__init__()
        self.has_sidebar = False

    def menu_action(self):
        if not self.has_sidebar:
            print('adding sidebar')
            self.add_widget(SideBar())
            self.has_sidebar = True
        else:
            print('not adding sidebar')

另一种方法是在单击按钮时禁用该按钮。在这种情况下,您的MainScreen课程将如下所示:

class MainScreen(FloatLayout):
    def __init__(self):
        super(MainScreen, self).__init__()

    def menu_action(self):
        print('adding sidebar')
        self.add_widget(SideBar())
        self.ids['menu'].disabled = True