您好我最近尝试过kivy图形,上下文指令(旋转,ranslate等)。所以我试图实现一个动画旋转轮(例如用于显示加载屏幕)。为此,我使用了garden.iconfonts包,紧跟在包中实现的示例。继承我的代码
.kv
<Convert>:
pos_hint: {'center_x':.5, 'center_y':.5}
size_hint: .8,.4
auto_dismiss: False
on_open:
self.load()
loading:loading
BoxLayout:
pos: root.pos
canvas.before:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
source: 'icons/olivine.png'
orientation: 'vertical'
Label: #STATUS 20 PERCENT
text: 'Converting file...'
id: status
size_hint: 1,.2
markup: True
RelativeLayout: #picture or rolling 60 %
size_hint: 1,.6
Label: #SPINNER
text: '{}'.format(icon('icon-spin6', 32))
size_hint: 1,1
markup: True
p: 0
id: loading
canvas:
PushMatrix
Rotate:
angle: -self.p
origin: self.center
axis: 0,0,1
PopMatrix
.py
from kivy.uix.modalview import ModalView
from kivy.properties import ObjectProperty
from kivy.animation import Animation
class Convert(ModalView):
loading= ObjectProperty()
def load(self):
anim = Animation(p = 360, duration= 1) + Animation(p=0 , duration=0)
anim.repeat = True
anim.start(self.loading)
从我的代码转换是一个弹出窗口,单击一个按钮时显示,然后在打开时显示旋转轮。
但是当我运行代码时它只显示轮子(即iconfont),但不会旋转。
该代码仅在我将标签下的canvas
类更改为canvas.before
时才有效。我假设我对如何使用这些工具的理解仍然很差。所以我希望有人可以帮助清除我做错了什么,以及如何使用canvas
答案 0 :(得分:1)
canvas:
PushMatrix
Rotate:
angle: -self.p
origin: self.center
axis: 0,0,1
PopMatrix
Rotate
和PopMatrix
之间的所有内容都会被旋转 - 这是PushMatrix和PopMatrix的重点,它们会绑定应用任何矩阵变换的区域。
在这种情况下,你没有把任何东西放在它们之间,所以你看不到任何旋转。
您可能希望将PushMatrix
和Rotate
放在canvas.before中,将PopMatrix
放在canvas.after中。由于标签绘图发生在画布中,因此它将处于旋转状态。