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

Posted

技术标签:

【中文标题】KivyMD 或 Kivy 中是不是有拖放功能?【英文标题】:Is there a drag and drop function in KivyMD or Kivy?KivyMD 或 Kivy 中是否有拖放功能? 【发布时间】:2021-06-28 14:58:21 【问题描述】:

我在 Kivy 中真的很新,我想制作一个应用程序,我可以在其中创建一个可拖动的 MDIconButton,如果可能的话,可以在任何 BoxLayout 中放置?这在 KivyMD 或 Kivy 中是否可行?还有一个 Kivy 功能​​,每当我按住一个按钮时,它都会显示某种包含用户可以输入的详细信息的小对话框。谢谢!

【问题讨论】:

您可以从 kivy-garden 安装 Drag-N-Drop。参考这个github.com/kivy-garden/drag_n_drop @FadiAbuRaid 谢谢!这可以与 KivyMD 一起使用吗? 【参考方案1】:

不要使用来自 kivy-garden 的 Drag-N-Drop 而是使用 DragBehavior 类!它直接与 Kivy 一起安装,无需安装 kivy-garden。

https://kivy.org/doc/stable/api-kivy.uix.behaviors.drag.html

下面是一些如何使用的示例代码:

from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.behaviors import DragBehavior
from kivy.lang import Builder

# You could also put the following in your kv file...
kv = '''
<DragLabel>:
    # Define the properties for the DragLabel
    drag_rectangle: self.x, self.y, self.width, self.height
    drag_timeout: 10000000
    drag_distance: 0

FloatLayout:
    # Define the root widget
    DragLabel:
        size_hint: 0.25, 0.2
        text: 'Drag me'
'''


class DragLabel(DragBehavior, Label):
    pass


class TestApp(App):
    def build(self):
        return Builder.load_string(kv)

TestApp().run()

【讨论】:

以上是关于KivyMD 或 Kivy 中是不是有拖放功能?的主要内容,如果未能解决你的问题,请参考以下文章

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

是否有拖放测试?

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

如何在 Kivy 或 KivyMD 中创建类似快照的按钮?

使用按钮更改 kivy 或 kivymd 中的屏幕

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