Я довольно новичок в 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 Неверное имя свойства