Kivy中无法选择动画的id

3

我有一个kv段落,位于我的Python代码中。

我想做的是选择这个按钮并对其进行动画处理。动画本身由按下NoButton触发。NoButton有一个类,它是根部件类的子类。不幸的是,尽管已经成功地引用了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 引用了类而不是id。不幸的是,它产生了相同的结果:什么也没有。

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

在这里我确实完全不知道该怎么办。我浏览了少量类似的问题,但是当涉及到深入的kivy开发时,真的没有多少帮助/指南。

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

非常感谢任何帮助/建议或正确方向的指引:)

1个回答

2
你正在创建新的对象,而不是引用现有的对象。
    anim.start(MainButton()) #new MainButton Object :(
    print(MainScreen().ids.pics) #also a new MainScreen object

我在你的代码中没有看到NoButton,但应该获取MainScreen 实例并从中提取MainButton实例

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

如果您能提供一个可运行的示例,我可能会更能够帮助您,我猜...


主屏幕未被识别:\ - TellMeWhy
main_screen”只是一个例子,没有一个可行的示例,很难猜测您的应用程序的流程... - Yoav Glazner
这就是我想要做的全部内容。我只是不知道如何成功地从kv代码中访问id。 - TellMeWhy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接