【问题标题】:MDCardSwipe swipe functionality not workingMDCardSwipe 滑动功能不起作用
【发布时间】:2022-01-18 02:08:51
【问题描述】:

我似乎无法让 MDCardSwipe 工作。即使是直接从 kivymd.uix.card 中的文档中提取的示例代码也无法在我的机器上运行。

from kivy.lang import Builder
from kivy.properties import StringProperty

from kivymd.app import MDApp
from kivymd.uix.card import MDCardSwipe

KV = '''
<SwipeToDeleteItem>:
    size_hint_y: None
    height: content.height

    MDCardSwipeLayerBox:
        # Content under the card.

    MDCardSwipeFrontBox:

        # Content of card.
        OneLineListItem:
            id: content
            text: root.text
            _no_ripple_effect: True


MDScreen:

    MDBoxLayout:
        orientation: "vertical"
        spacing: "10dp"

        MDToolbar:
            elevation: 10
            title: "MDCardSwipe"

        ScrollView:
            scroll_timeout : 100

            MDList:
                id: md_list
                padding: 0
'''


class SwipeToDeleteItem(MDCardSwipe):
    '''Card with `swipe-to-delete` behavior.'''

    text = StringProperty()


class TestCard(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = Builder.load_string(KV)

    def build(self):
        return self.screen

    def on_start(self):
        '''Creates a list of cards.'''

        for i in range(20):
            self.screen.ids.md_list.add_widget(
                SwipeToDeleteItem(text=f"One-line item {i}")
            )


TestCard().run()

我机器上的上述代码在列表中创建卡片,但没有刷卡功能。我也尝试过使用 swipe_distance 和 swipe_type,但一直无法让滑动功能正常工作。

【问题讨论】:

  • 再次查看文档并向下滚动一点。您复制的代码不是功能代码。

标签: python kivy kivy-language kivymd


【解决方案1】:

我自己也遇到了同样的问题。

我建议查看MDCardSwipe docs 中的“结束代码”,运行它,您可能会遇到与原始问题相同的问题。

你会注意到,如果(在电脑上)你长按左边缘然后拖动滑动功能就在那里,很难触发。

我认为这是由于滚动视图和子小部件之间的输入竞争,我通过调整 scroll_timeout 解决了这个问题。

【讨论】:

  • 你说得对,我只需要从最边缘而不是整个卡片长度上滑动。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 2018-08-20
  • 1970-01-01
  • 2021-01-13
  • 2014-11-17
  • 2017-12-16
相关资源
最近更新 更多