【问题标题】:How can I swipeable Kivy Button that can also have single, long or double press functionality?我如何可以滑动的 Kivy Button 也可以具有单按、长按或双按功能?
【发布时间】:2021-12-31 18:22:12
【问题描述】:

我想制作具有类似可滑动Buttons(或其他用途填充小部件)的 Kivy 移动应用。除此之外,我还想从相同的Button 获得第二种类型的输入。例如 Gmail 移动应用程序使用此功能:

我有这个代码:

ma​​in.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

class ItemList(BoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.orientation = "vertical"
        self.item_list = []
        for i in range(10):
            self.item_list.append(Button(text=str(i),
                                    on_release=lambda x, this_item=i: print(this_item)))
            self.add_widget(self.item_list[-1])

class MainApp(App):
    pass

MainApp().run()

ma​​in.kv

ItemList:

我希望程序能够理解列表上的女巫按钮被按下,是按下“键入”滑动或单/双/长按(三个中的任何一个都可以)并执行相应的方法。

我一直在为此寻找预先构建的包,但我可能使用了错误的关键字,因为我在列表方法中找不到适合这种类型的按钮/小部件。

【问题讨论】:

    标签: python button mobile kivy swipe


    【解决方案1】:

    以下解释或建议是基于您是Kivy 的新手(看起来)。

    据我了解,在kivy 中,您可能无法期望某些东西是即用型组件。但这并不是一个缺点,实际上是让开发人员选择、实现自己的一种非常有效的方式。有很多方法可以对CustomWidget 进行编程,比如Button。您可以更改外观、触摸反馈、纹理等。

    我希望程序能够理解列表上的女巫按钮被按下,是按下“键入”滑动或单/双/长按(三个中的任何一个都可以)并执行相应的方法。

    要获得您自己的触摸行为(行为),除了默认的 mixin ButtonBehavior,您可以使用三个触摸事件 on_touch_downon_touch_moveon_touch_up 实现所需的逻辑。要启用长按/按住行为,一种方法可以是在 on_touch_down 事件中安排一个动作,其时间阈值超过该时间阈值,该动作将通过同一事件触发。再次获得滑动行为,您可以在 on_touch_move 事件中实现逻辑,并根据需要在其他事件中实现。您还可以通过检查collide_pointcollide_widget 等来限制触摸事件进一步传播。

    您可以使用ids 或通过它传递一些参数来跟踪/识别任何Button

    我正在为此寻找预先构建的包,但我可能正在使用...

    是的,有一些。 KivyMD 是这些基于Kivy 开发的项目之一,它近似于 Google 的 Material Design。

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2011-12-12
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多