Как добавить ящик для нагиба в верхней части Boxlayout с языком Kivy и Python - PullRequest
0 голосов
/ 04 мая 2020

Я довольно новичок в Kivy language и мне нравятся функции, которые я вижу. Я пытаюсь создать простое приложение, которое имеет кнопку внизу и панель навигации, где я могу перечислять такие вещи, как помощь и многое другое. У меня есть эскиз дизайна, сейчас я пытаюсь его реализовать. В данный момент я пытаюсь добавить Navigation drawer поверх Box layout моего app

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.config import Config
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.core.window import  Window
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import  Screen, ScreenManager, FadeTransition
from kivy.properties import StringProperty, ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Color
from kivy.lang import Builder
from kivy.uix.rst import RstDocument
from kivy.animation import Animation
from kivy.base import runTouchApp
from kivymd.uix.label import MDLabel
from kivymd.app import MDApp
from kivymd.uix.tab import MDTabsBase
from kivymd.theming import ThemeManager
from kivymd.uix.navigationdrawer import NavigationLayout
from kivymd.icon_definitions import md_icons
import os



# RGBA = Red, Green, Blue, Opacity
Window.clearcolor= (59/255.0, 176/255.0, 212/255.0, 1)

class MainWindow(Screen):
    pass

class FileDialog(Screen, BoxLayout):

    def currentdir(self):
        return os.getcwd()

    def select(self, *args): 
        self.label.text = args[1][0]
        return self.label.text

    def load(self, path, filename):
        with open(os.path.join(path, filename[0])) as stream:
            self.text_input.text = stream.read()

        self.dismiss_popup()

class Navigator(NavigationLayout):
    theme_cls = ThemeManager()
    nav_drawer = ObjectProperty()

class WindowManageer(ScreenManager):
    pass

kv = Builder.load_file("layoutdesign.kv")

class MyApp(App):
    def build(self):
        return kv

if __name__ == "__main__":
    MyApp().run()

Вот мой файл layoutdesign.kv:

WindowManageer:
    MainWindow:
    FileDialog:



<MainWindow>:
    name: "main"

    BoxLayout:

        orientation: 'vertical'

        <Navigator>:
            NavigationDrawer:



        FloatLayout:
            Button:
                background_normal: "button-normal.png"
                background_down: "button-down.png"
                font_size: 20
                pos: root.width / 2 - self.width / 2, root.height / 4 - self.height / 4
                size_hint: 0.4, 0.2

                on_release: 
                    app.root.current = "dialog"
                    root.manager.transition.direction = "left"



<FileDialog>:
    name: "dialog"

    label: label

    # Providing the orentation 
    orientation: 'vertical'

    GridLayout:
        cols: 1


        BoxLayout: 

            # Creating Icon view other side 
            FileChooserIconView:
                id: filechooser
                path: root.currentdir()
                filters: ['*.xlsx']
                canvas.before: 
                    Color: 
                        rgba: 59/255.0, 176/255.0, 212/255.0, 1
                    Rectangle: 
                        pos: self.pos
                        size: self.size

                on_selection: root.select(*args)

        GridLayout:
            cols: 3
            row_force_default: True
            row_default_height: 40
            size_hint_y: .1

            Button:
                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)
            Button:
                text: "Cancel"
                on_release: root.cancel()
            Button:
                text: "Go back"
                on_release: 
                    app.root.current = "main"
                    root.manager.transition.direction = "right"

        Label:
            id: label
            size_hint_y: .1
            canvas.before:
                Color: 
                    rgb: .5, .5, .4
                Rectangle: 
                    pos: self.pos 
                    size: self.size

При запуске кода после добавления ящика навигации, чтобы увидеть, как он выглядит, я получаю следующую ошибку:

 >>   14:        <Navigator>:
      15:            NavigationDrawer:
      16:
 ...

Пожалуйста, как я могу добавить Navigation drawer красиво поверх моих Box Layout и списка из ярлыков типа Help, visit us, которые при нажатии переносят меня на другой screen?

T Неверное имя свойства

...