无法 select Kivy 中的动画 ID

Unable to select id for animation in Kivy

我的 python 代码中有一个 kv 段。

我想要做的是 select 这个按钮并让它动起来。动画本身是通过按 NoButton 触发的。 NoButton 本身有一个 class,它是根小部件 class 的子项。不幸的是,尽管能够成功地从 kv 代码中引用 id,但我似乎无法真正使用它。

NoButton 完全没有结果。没有错误,什么都没有。如果我尝试打印 ID,我得到的是它引用的按钮的位置:

<__main__.MainButton object at 0x7fd5db0d5590>

这是 kv 代码的片段:

<MainClass>:
<MainScreen>:
    id: main

    AnchorLayout:
        size: root.size
        anchor_x: 'center'
        anchor_y: 'center'
        padding: 0, 0, 0, 50
        MainButton:
            id: pics
            rgba: 1,5,1,1
            size_hint_x: None
            size_hint_y: None
            height: main.height / 1.5
            width: main.width / 1.5 

和 python:

class MainScreen(Screen):
    pass

class MainButton(Button):
    pass

class NoButton(ButtonBehavior, Image, MainClass):
    def on_press(self):     
        anim = Animation(x=300, y=300)
        anim.start(MainButton())
        print(MainScreen().ids.pics)

您会注意到 anim.start 引用了 class 而不是此处的 ID。不幸的是,它产生了相同的结果;什么都没有。

pics 创建为对象 属性 并在 kv 中声明它也无法工作。

我真的是一头雾水。我已经浏览了几个稍微相似的问题,但是关于 help/guides 深入 kivy 开发的问题真的不多。

我正在使用 Python 3.5.3 和 Kivy 1.9.2-dev0

将不胜感激任何 help/advice 或正确方向的指点:)

您正在创建新对象而不是引用现有对象

    anim.start(MainButton()) #new MainButton Object :(
    print(MainScreen().ids.pics) #also a new MainScreen object

我在你的代码中没有看到 NoButton 在哪里,但应该在 MainScreen instance 上找到并从中提取 MainButton instance

main_button = main_screen.ids.pics
ani.start(main_button)

如果你post一个可运行的例子我想我也许能帮助你更多...