KivyMD中的MDDropdownMenu中的定位错误

卢克·奥兰德

我在KivyMD中放置MDDropdownMenu时遇到问题。而且我认为我发现了一个小错误。这是代码的相关部分。

.PY

class MainApp(MDApp):
    [...]
    def on_start(self):
        menu_items = [{"icon": "apple", "text": f"Item #{i}"} for i in range(5)]
        self.menu = MDDropdownMenu(
            caller=self.root.ids.MD_menu_screen.ids.button, items=menu_items, width_mult=4
        )
    [...]

.KV

<MDMenuScreen>:
    MDRaisedButton:
        id: button
        pos_hint: {'center_x': .5, 'center_y': .5}
        text: 'Open menu'
        on_release:
            app.menu.open()

它可以工作,但是错误在于菜单的位置。当您启动应用程序并单击按钮时,它看起来像这样

但这不是最奇怪的部分,当我调整窗口大小时,即使我重新调整大小然后将其放回正常状态,它看起来也很正常

因此,我认为这不是我的代码有问题。这可能只是一个错误。现在我希望有人对此进行(临时)修复。提前致谢!

卢克·奥兰德

我自己找到了解决方法!我查看了MDmenu的源代码,发现它有一个名为的方法check_position_caller(self, instance, width, height),并且每次窗口大小或位置改变时都会调用此函数。由于菜单在调整窗口大小后效果很好,因此我认为这可能是因为调用了该方法以再次找到调用者的位置。

因此,我的解决方案是在按下打开菜单的按钮时调用此方法。这样,菜单将首先确保找到呼叫者的正确位置,然后立即在该位置打开它。因此,长话短说:

更改此:

<MDMenuScreen>:
    MDRaisedButton:
        id: button
        pos_hint: {'center_x': .5, 'center_y': .5}
        text: 'Open menu'
        on_release:
            app.menu.open()

变成这个:

<MDMenuScreen>:
    MDRaisedButton:
        id: button
        pos_hint: {'center_x': .5, 'center_y': .5}
        text: 'Open menu'
        on_release:
            # Pass three arguments because the func needs them, it doesn't actually use them
            app.menu.check_position_caller(None, None, None) 
            app.menu.open()

似乎只有在有多个屏幕时才会发生此错误。

我还发现这不是出现此问题的唯一窗口小部件。例如,MDBottomNavigation也存在此问题,我找到了类似的修复程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在KivyMD的MDDropdownMenu中按下标签后如何更改按钮的文本?

来自分类Dev

MDDropdownMenu调用方上的KivyMD KeyError

来自分类Dev

jQuery 背景定位与 CSS 动画定位中的错误和效率

来自分类Dev

Internet Explorer 11中的绝对定位错误

来自分类Dev

JRI-如何定位R中的错误

来自分类Dev

Internet Explorer 11中的绝对定位错误

来自分类Dev

JRI-如何定位R中的错误

来自分类Dev

使 KivyMD 中的 MDTextField 工作正常

来自分类Dev

如何在KivyMD的MDlist项上放置MDDropdownMenu?

来自分类Dev

Haskell,错误“绑定位置中的合格名称”

来自分类Dev

PDF格式中的字母定位和字体错误

来自分类Dev

PDF格式中的字母定位和字体错误

来自分类Dev

如何在控制器中定位错误消息

来自分类Dev

在 Putty 中,如何根据字符位置定位错误所在?

来自分类Dev

如何在KivyMD中创建选择列表

来自分类Dev

android中的定位布局

来自分类Dev

在CSS中定位itemprop?

来自分类Dev

在UIView中定位文本

来自分类Dev

在div中定位段落

来自分类Dev

在CSS中定位的问题

来自分类Dev

页脚中的DIV定位

来自分类Dev

在SwiftUI中定位TextEditor

来自分类Dev

在LibGDX中定位WidgetGroup

来自分类Dev

定位HTML中的DIV

来自分类Dev

div中的按钮定位

来自分类Dev

在UIView中定位文本

来自分类Dev

在RelativeLayout中定位ImageView

来自分类Dev

在 CSS 中定位 itemprop

来自分类Dev

CSS 中的 Flex 定位