Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python KivyMD:屏幕内容与工具栏重叠_Python_User Interface_Kivy - Fatal编程技术网

Python KivyMD:屏幕内容与工具栏重叠

Python KivyMD:屏幕内容与工具栏重叠,python,user-interface,kivy,Python,User Interface,Kivy,我正在用KivyMD编写一个简单的应用程序。根据kivy文档,带有MDNavigationDrawer和MDToolbar的.kv结构是正确的,只要屏幕是空的,一切都可以正常工作。当我向它们添加内容时,内容(而不是工具栏下的内容)位于其上方。我怎样才能修好它 这是我的密码: from kivy.lang import Builder from kivy.uix.boxlayout import BoxLayout from kivy.properties import ObjectPropert

我正在用KivyMD编写一个简单的应用程序。根据kivy文档,带有MDNavigationDrawer和MDToolbar的.kv结构是正确的,只要屏幕是空的,一切都可以正常工作。当我向它们添加内容时,内容(而不是工具栏下的内容)位于其上方。我怎样才能修好它

这是我的密码:

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty

from kivymd.app import MDApp

KV = '''
<ContentNavigationDrawer>:

    ScrollView:

        MDList:

            OneLineListItem:
                text: "Screen 1"
                on_press:
                    root.nav_drawer.set_state("close")
                    root.screen_manager.current = "scr 1"

            OneLineListItem:
                text: "Screen 2"
                on_press:
                    root.nav_drawer.set_state("close")
                    root.screen_manager.current = "scr 2"


Screen:

    MDToolbar:
        id: toolbar
        pos_hint: {"top": 1}
        elevation: 10
        title: "Test"
        left_action_items: [["menu", lambda x: nav_drawer.set_state("open")]]

    NavigationLayout:
        x: toolbar.height

        ScreenManager:
            Screen:
                name: "scr 1"
                ScrollView:
                    BoxLayout:
                        orientation: "vertical"
                        Button:
                            text: "Hello"
                        Button:
                            text: "I wish"
                        Button:
                            text: "I could"
                        Button:
                            text: "Finally get"
                        Button:
                            text: "This to work"


            Screen:
                name: "scr 2"

                MDLabel:
                    text: "Screen 2"
                    halign: "center"

        MDNavigationDrawer:
            id: nav_drawer

            ContentNavigationDrawer:
                screen_manager: screen_manager
                nav_drawer: nav_drawer
'''


class ContentNavigationDrawer(BoxLayout):
    screen_manager = ObjectProperty()
    nav_drawer = ObjectProperty()


class TestNavigationDrawer(MDApp):
    def build(self):
        return Builder.load_string(KV)


TestNavigationDrawer().run()
来自kivy.lang导入生成器
从kivy.uix.boxlayout导入boxlayout
从kivy.properties导入ObjectProperty
从kivymd.app导入MDApp
KV='''
:
滚动视图:
MDList:
OneLineListItem:
文本:“屏幕1”
新闻界:
root.nav\u drawer.set\u状态(“关闭”)
root.screen\u manager.current=“scr 1”
OneLineListItem:
文本:“屏幕2”
新闻界:
root.nav\u drawer.set\u状态(“关闭”)
root.screen\u manager.current=“scr 2”
屏幕:
MDToolbar:
id:工具栏
pos_提示:{“top”:1}
标高:10
标题:“测试”
左侧操作项:[[“菜单”,lambda x:nav\u抽屉。设置状态(“打开”)]]
导航布局:
x:toolbar.height
屏幕管理器:
屏幕:
名称:“scr 1”
滚动视图:
盒子布局:
方向:“垂直”
按钮:
文字:“你好”
按钮:
正文:“我希望”
按钮:
文字:“我可以”
按钮:
文本:“最终获得”
按钮:
正文:“这是工作”
屏幕:
名称:“scr 2”
MDLabel:
文本:“屏幕2”
哈利恩:“中心”
MDNavigationDrawer:
id:nav_抽屉
ContentNavigationDrawer:
屏幕管理器:屏幕管理器
导航抽屉:导航抽屉
'''
类内容导航抽屉(BoxLayout):
screen\u manager=ObjectProperty()
nav_drawer=ObjectProperty()
类TestNavigationDrawer(MDApp):
def生成(自):
返回生成器。加载字符串(KV)
TestNavigationDrawer().run()
以下代码的输出:
屏幕类是一个
RelativeLayout
,因此您必须像定位任何
RelativeLayout
一样定位其子类。
屏幕的每个子项
都会获得
(1,1)
的默认
大小提示
,以及
(0,0)
的默认
位置
,因此如果这不是您想要的,您必须对其进行调整。在您的情况下,
NavigationLayout
将根据这些默认值完全覆盖
屏幕。只需添加一个
size\u hint\u y
,即可解决此问题,如下所示:

NavigationLayout:
    x: toolbar.height
    size_hint_y: 1.0 - toolbar.height/root.height
这将设置
NavigationLayout
的大小,使其正好与
MDToolbar
的底部相接,而不是覆盖它