【问题标题】:How can I change the on_release functionality of a KivyMD button using Python code in KivyMD?如何使用 KivyMD 中的 Python 代码更改 KivyMD 按钮的 on_release 功能?
【发布时间】:2021-10-04 14:51:37
【问题描述】:

我们如何使用 Python 代码更改 KivyMD 按钮的on_release 函数?我最初向 KivyMD 按钮添加了一个打印语句,并且我已经使用 Python 代码更改了 KivyMD 按钮的 on_release 函数,但问题是,它将我的新函数加入到按钮中,而不是替换它以前的函数。这意味着,它还执行分配给按钮的先前功能,但我想完全更改功能,就像使用 Python 代码用新功能替换它一样。

这是我的 Python 代码

self.root.ids.btn.on_release = self.new_function

提前致谢:)

【问题讨论】:

    标签: python kivy kivymd


    【解决方案1】:

    如果您最初的on_release 函数设置在kv 中,那么我认为您无法删除或替换它。我相信解决方法是扩展Button 类并在其__init__() 方法中定义初始on_release 函数。像这样:

    class MyButt(Button):
        def __init__(self, **kwargs):
            self.on_release = partial(print, 'hi')
            return super(MyButt, self).__init__(**kwargs)
    

    然后将kv 中的Button 替换为MyButt,并从kv 中删除on_release: 行。

    【讨论】:

    • 我修复了原始答案中的一个愚蠢错误。你不能做self.on_release = print('hi'),因为那是尝试将print() 的返回值分配给on_release 事件。而不是实际的方法。
    猜你喜欢
    • 2020-08-22
    • 2020-12-31
    • 2021-08-13
    • 1970-01-01
    • 2022-07-17
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多