Граница с Киви / KivyMD - PullRequest
       3

Граница с Киви / KivyMD

0 голосов
/ 28 мая 2020

Я хочу добавить рамку на главный экран моего приложения, но не знаю, как это сделать. Я попытался извлечь несколько советов из этого вопроса: Kivy-как я могу сделать высоту моего холста меньше, чем высота родительского Но я не могу понять это.

Проблема в том, что я также использую панель навигации KivyMD, я бы хотел, чтобы граница была отделена от верхней панели, охватывая все, что ниже панели. Пожалуйста, дайте мне знать, если я не понимаю.

Вот пример кода, который копирует мою установку.

Возможно, я мог бы добавить несколько случайных прямоугольников в качестве границы?

РЕДАКТИРОВАТЬ:

Хорошо, почти готово, у меня есть «граница», но теперь мне нужно добавить size_hint в AnchorLayout, чтобы игнорировать верхнюю часть экрана, где находится строка меню является. Вот обновленный код.

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

from kivymd.app import MDApp

kv = '''
#:import hex kivy.utils.get_color_from_hex

NavigationLayout:
    canvas.before:
        Color:
            rgb: hex('#C0C0C0')
        Rectangle:
            size: self.size
            pos: self.pos
    ScreenManager:
        id: screen_manager
        Screen:
            name: "home_screen"
            BoxLayout:
                orientation: 'vertical'
                MDToolbar:
                    title: 'Name of the App!'
                    elevation: 10
                Widget:
            FloatLayout:

                orientation: 'vertical'
                AnchorLayout:
                    anchor_x: 'center'
                    anchor_y: 'center'
                    Widget:
                        canvas.before:
                            Color:
                                rgb: hex('#F5F5F5')
                            Rectangle:
                                size: self.size
                                pos: self.pos
                        size_hint: .95, .95
                MDLabel:
                    text: "Some More Text"
                    halign: "center"
                    color: 0,0,0,1
                    pos_hint: {"center_x": .5, "center_y": .75}
                    size_hint: .7, .1

    MDNavigationDrawer:
        id: nav_drawer
        ContentNavigationDrawer:
            orientation: "vertical"
            padding: "8dp"
            spacing: "8dp"
            AnchorLayout:
                anchor_x: "left"
                size_hint_y: None
                height: avatar.height
                Image:
                    id: avatar
                    source: "image.jpg"
            MDLabel:
                text: "Text here"
                font_style: "Button"
                size_hint_y: None
                height: self.texture_size[1]
    '''
class ContentNavigationDrawer(BoxLayout):
    pass

class MyApp(MDApp):
    def build(self):
        return Builder.load_string(kv)


MyApp().run()


1 Ответ

1 голос
/ 29 мая 2020

Я думаю, вы получите то, что хотите, если сделаете отступ для FloatLayout так, чтобы он находился в BoxLayout. Как это:

#:import hex kivy.utils.get_color_from_hex

NavigationLayout:
    canvas.before:
        Color:
            rgb: hex('#C0C0C0')
        Rectangle:
            size: self.size
            pos: self.pos
    ScreenManager:
        id: screen_manager
        Screen:
            name: "home_screen"
            BoxLayout:
                orientation: 'vertical'
                MDToolbar:
                    title: 'Name of the App!'
                    elevation: 10
                # Widget:  # not needed
                FloatLayout:

                    orientation: 'vertical'
                    AnchorLayout:
                        anchor_x: 'center'
                        anchor_y: 'center'
                        Widget:
                            canvas.before:
                                Color:
                                    rgb: hex('#F5F5F5')
                                Rectangle:
                                    size: self.size
                                    pos: self.pos
                            size_hint: .95, .95
                    MDLabel:
                        text: "Some More Text"
                        halign: "center"
                        color: 0,0,0,1
                        pos_hint: {"center_x": .5, "center_y": .75}
                        size_hint: .7, .1

    MDNavigationDrawer:
        id: nav_drawer
        ContentNavigationDrawer:
            orientation: "vertical"
            padding: "8dp"
            spacing: "8dp"
            AnchorLayout:
                anchor_x: "left"
                size_hint_y: None
                height: avatar.height
                Image:
                    id: avatar
                    # source: "image.jpg"
                    source: 'tester.png'
            MDLabel:
                text: "Text here"
                font_style: "Button"
                size_hint_y: None
                height: self.texture_size[1]
...