android - 无法在 Kivy 中为动画选择 id

标签 android python python-3.x kivy kivy-language

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

我想要做的是选择此按钮并为其设置动画。动画本身是通过按 NoButton 触发的。 . NoButton有一个自己的类,它是根小部件类的子类。不幸的是,尽管我已经能够成功地从 kv 代码中引用 id,但我似乎无法真正使用它。

按下 NoButton结果一无所获。没有错误,什么都没有。如果我尝试打印 id,我得到的是它引用的按钮的位置:

<__main__.MainButton object at 0x7fd5db0d5590>

这是 kv 代码的 fragment :

<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

将不胜感激任何帮助/建议或正确方向的指示:)

最佳答案

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

    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)

如果您发布一个可运行的示例,我想我可能会为您提供更多帮助...

关于android - 无法在 Kivy 中为动画选择 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44770788/

相关文章:

android - Fragment 必须在主题 onCreate 中指定preferenceTheme

java - 如何将 ArrayList<string> 中的所有图像设置为 imageViews

python - 如果我不能使用它所附加的变量来找到它的索引,如何从列表中删除特定对象?

python - 如何使数据类中的属性只读?

python - 无法以某种自定义方式排列和打印网页中的某些字段

python - 内部列表每个位置的字符频率

android - Android中用于设计GUI的工具

java - 为什么我们必须将InputStream转换为ByteArrayOutputStream?

python - 具有不同创建/修改字段的 Django TimeStamped mixin

python - 通过仅指定键的一部分从字典中删除键