You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KivyMD使用MDToolbar后其他控件位置定位异常的解决求助

问题根因

你当前使用的垂直排列MDBoxLayout会为每个子控件自动分配独立的垂直排布空间,直接放在MDBoxLayout下的MDIconButton的pos_hint是相对于自身被分配到的小范围布局区域计算的,而非相对于Toolbar下方的整块可用区域,因此y轴定位不符合预期。

解决方案

将需要自由定位的按钮统一放到FloatLayout容器内,让FloatLayout占满Toolbar下方的所有剩余空间,此时按钮的pos_hint会相对于整块FloatLayout区域计算,定位即可正常生效。修改后代码如下:

from kivy.lang import Builder
from kivymd.app import MDApp
KV = """
MDBoxLayout:
    orientation: "vertical"

    MDToolbar:
        title: "MDToolbar"
    
    FloatLayout:
        MDIconButton:
            icon: "record-circle"
            md_bg_color: app.theme_cls.primary_color
            user_font_size: "64sp"
            # 可根据需求调整center_y数值,0.5为当前FloatLayout区域垂直居中
            pos_hint: {"center_x": 0.6, "center_y": 0.5}
        
        MDIconButton:
            icon: "motion-play-outline"
            md_bg_color: app.theme_cls.primary_color
            user_font_size: "32sp"
            pos_hint: {"center_x": 0.6, "center_y": 0.2}

        MDIconButton:
            icon: "content-save"
            md_bg_color: app.theme_cls.primary_color
            user_font_size: "32sp"
            pos_hint: {"center_x": 0.45, "y": 0.2}
"""


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


Test().run()

内容的提问来源于stack exchange,提问作者g_man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:09:03