我的 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/