我的问题是:我正在学习Kivymd内部的material 设计.看到material design website,我注意到它使用了带有鼠标悬停事件的导航轨道,用于添加导航抽屉的一些按钮.图片:

Material design website

所以我试着用kivymd在我的python程序中创建它,但我的问题是,当我移动鼠标悬停时,导航抽屉站在导航栏杆上方,如下所示:

Before hover After hover

我试着使用位置、填充和间距,但没有改变位置.Pos_hint可以工作,但导航轨道有绝对大小,因此无法解算.我恢复了KV语言:


MDNavigationRail:
    id: nav_rail
    selected_color_background: app.theme_cls.primary_color
    ripple_color_item: app.theme_cls.primary_color
    font_name: app.COMFORTAA
    on_item_release: root._item_clicked(*args)
    MDNavigationRailContent:

MDNavigationLayout:
    MDScreenManager:

MDNavigationDrawer:
    id: nav_drawer
    radius: 0, 16, 16, 0
    elevation: 0.5
    font_size: '16dp'
    font_name: app.COMFORTAA
    padding_x: '100dp'
    width: "240dp"

推荐答案

这样啊,原来是这么回事!在做了很多工作和try 之前,我想出了一种方法,可以做到pos_hint:


<MyScreen>:
    MDFloatLayout:
        MDBoxLayout:
            size: root.size
            pos: root.pos
            MDNavigationRail:
                id: nav_rail
                [...]
            MDBoxLayout:
                MDScreenManager:
                    [...]
        MDNavigationDrawer:
            id: nav_drawer
            pos_hint: {'x': nav_rail.width / root.width}
            [...]

首先我创建了一个MDFloatLayout,以使MDNavigationDrawer可以有一个浮动位置.

Pos_hint是MDNavigationRail的宽度除以根部的宽度,它将得到轨道末端相对于根部宽度的百分比位置.

我需要将ScreenManager和Rail放在Box布局中,就像文档中的指导一样,并给出MDFloatLayout中MDBoxLayout的根大小和位置.

谢谢大家!

Python-3.x相关问答推荐

如何匹配字母,数字,短划线,逗号,但不是如果没有数字和字母?

我在创建Pandas DataFrame时感到困惑

确定字符串的长度并提取前15或14个字符

Numba编译时间呈指数级增长--可以像C编译器一样配置优化级别吗?

在python内的powershell中转义$_

Python webdrivermanager 和 Chrome 115.0 的 URL https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790 错误没有此类驱动程序

过滤阈值大小数据以使用 Pyspark 或 Python 读取

当我判断另一个 checkButton 时,如何判断两个 python tkinter checkButtons?

Python多进程:运行一个类的多个实例,将所有子进程保留在内存中

为什么最简单的流光示例会出错?

为直方图中的每个 bin 绘制不同的 colored颜色 (Matplotlib)

从 yahoo Finance python 一次下载多只股票

使用 Python 解析 JSON 嵌套字典

Python从base64转换为二进制

django rest框架中的save()、create()和update()有什么区别?

Generic[T] 基类 - 如何从实例中获取 T 的类型?

为什么 string.maketrans 在 Python 3.1 中不起作用?

为现有项目创建virtualenv

如何在 Pandas 中的超 Big Data 框上创建数据透视表

如何从 Base64 转换为字符串 Python 3.2