如何在 kivy 或 kivymd 中正确使用 on_resize 函数

Posted

技术标签:

【中文标题】如何在 kivy 或 kivymd 中正确使用 on_resize 函数【英文标题】:how to properly use on_resize function in kivy or kivymd 【发布时间】:2021-06-05 00:08:34 【问题描述】:

在我的应用程序中,我需要在调整大小时在某个屏幕中调用某个函数,它看起来像这样

class MainApp(MDApp):
    def on_resize(self):
        if self.manager.get_screen() == "table_screen":   
            if self.width>self.height:
                self.manager.get_screen("table_screen").ids.table_image.source="table1.png"
                self.manager.get_screen("table_screen").ids.left_panel.opacity=0
                print("PAPAPAPPAAPPA")
            else:
                self.ids.left_panel.size_hint_x=.5
                self.ids.left_panel.opacity=1
                print("PAPAPAPPAAPPA")

    def build(self):
        Window.bind(size=self.on_resize)
        return Main()

但是当我在任何屏幕上调整窗口大小时,图像会破碎并且出现错误 on_resize() 接受 1 个位置参数,但给出了 3 个 这个错误的根源是什么?我看不到在任何地方给出 3 个论点

【问题讨论】:

【参考方案1】:

错误的根源在于,当您将函数绑定到属性更改时,它会接收三个位置参数。它们是self,属性发生变化的类实例的实例,以及属性的新值。

【讨论】:

我现在明白了,但我还是不太明白该怎么办,我只是从参数中删除 self 吗? 感谢您的帮助,刚刚添加了 self 和 *args,现在可以使用了

以上是关于如何在 kivy 或 kivymd 中正确使用 on_resize 函数的主要内容,如果未能解决你的问题,请参考以下文章

我可以用啥在 kivy 或 kivymd 中显示段落文本?

如何通过按下按钮 kivy/kivymd/python 在另一个窗口中创建按钮

KivyMD 或 Kivy 中是不是有拖放功能?

列表项 (Kivy & KivyMD) 循环值的回调

如何在 kivy 和 kivymd 中访问具有 id 的元素

如何在 KivyMD 的 .kv 文件中使用 kivy 中的数据表?