Я хочу добавить рамку на главный экран моего приложения, но не знаю, как это сделать. Я попытался извлечь несколько советов из этого вопроса: 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()