Kivymd 卡按钮功能

Posted

技术标签:

【中文标题】Kivymd 卡按钮功能【英文标题】:Kivymd card button functionality 【发布时间】:2020-08-22 11:03:38 【问题描述】:

我使用 kivy、kivymd 和 python 制作了一个简单的应用程序。 md 卡中的 on_release 功能不起作用,下面是我的代码 sn-p。

from kivy.lang import Builder

from kivymd.app import MDApp

kv = '''
    Screen:

        MDCard:
        size_hint: None, None
        size: "280dp", "180dp"
        pos_hint: "center_x": .5, "center_y": .5
        ripple_behavior: True
        on_release:print("worked")
'''


class TestCard(MDApp):
    def build(self):
        return Builder.load_string(kv)


TestCard().run()

【问题讨论】:

【参考方案1】:

您必须小心您在 kv 字符串中使用的制表符。首先,您从 Screen 声明之前的选项卡开始。那是行不通的。然后,您必须在声明 MDCard 后设置选项卡以设置其属性。像这样对我有用:

from kivy.lang import Builder

from kivymd.app import MDApp

KV = '''
Screen:

    MDCard:
        size_hint: None, None
        size: "280dp", "180dp"
        pos_hint: "center_x": .5, "center_y": .5
        ripple_behavior: True
        on_release: print("worked")
'''


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


TestCard().run()

【讨论】:

【参考方案2】:

您的代码的问题是 python 语句在 .kv 文件中不起作用。另一个问题是缩进。因此,只需更改缩进并在您的 TestCard 类中创建一个方法,如下所示:

from kivy.lang import Builder

from kivymd.app import MDApp

kv = '''
Screen:
    MDCard:
        size_hint: None, None
        size: "280dp", "180dp"
        pos_hint: "center_x": .5, "center_y": .5
        ripple_behavior: True
        on_release: app.work()
'''


class TestCard(MDApp):
    def build(self):
        return Builder.load_string(kv)

    def work(self):
        print("worked")


TestCard().run()

【讨论】:

以上是关于Kivymd 卡按钮功能的主要内容,如果未能解决你的问题,请参考以下文章

kivymd MDbottomnavigation on_tab_press

如何在 kivymd 功能开始时显示加载屏幕?

KivyMD 文件管理器功能

Kivymd MDNavigation 抽屉禁用滑动

如何在启动时显示 KivyMD 数据表?

普通选项卡+自动播放功能+向前/向后按钮 原生js