无法 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一个可运行的例子我想我也许能帮助你更多...
我的 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一个可运行的例子我想我也许能帮助你更多...