Python 如何正确使用kivy图形上下文指令
嗨,我最近尝试了kivy图形和上下文说明(旋转、平移等)。因此,我尝试实现一个动画旋转轮(例如用于显示加载屏幕)。为此,我使用garden.iconfonts包,并紧跟包中实现的示例。这是我的密码Python 如何正确使用kivy图形上下文指令,python,kivy,Python,Kivy,嗨,我最近尝试了kivy图形和上下文说明(旋转、平移等)。因此,我尝试实现一个动画旋转轮(例如用于显示加载屏幕)。为此,我使用garden.iconfonts包,并紧跟包中实现的示例。这是我的密码 .kv <Convert>: pos_hint: {'center_x':.5, 'center_y':.5} size_hint: .8,.4 auto_dismiss: False on_open: self.load() loading:l
.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)
.kv
:
位置提示:{'center_x':.5'center_y':.5}
大小提示:.8,.4
自动解除:错误
开放日:
self.load()
装货:装货
盒子布局:
pos:root.pos
在以下情况之前:
颜色:
rgba:1,1,1,1
矩形:
pos:self.pos
大小:self.size
来源:“icons/olivine.png”
方向:“垂直”
标签:#状态20%
文本:“正在转换文件…”
身份证:身份证
尺寸提示:1.2
标记:正确
相对寿命:#图片或滚动60%
尺寸提示:1.6
标签:#微调器
文本:“{}”。格式(图标('icon-spin6',32))
大小提示:1,1
标记:正确
p:0
id:正在加载
画布:
推矩阵
轮换:
角度:-self.p
来源:自我中心
轴:0,0,1
流行音乐
白痴
从kivy.uix.modalview导入modalview
从kivy.properties导入ObjectProperty
从kivy.animation导入动画
类转换(ModalView):
加载=对象属性()
def加载(自):
动画=动画(p=360,持续时间=1)+动画(p=0,持续时间=0)
anim.repeat=True
动画启动(自加载)
从我的代码转换是一个弹出窗口,显示当一个按钮被点击,然后当它打开,显示纺车。
但当我运行代码时,它只显示轮子(即iconfont),而不旋转。
仅当我将标签下的canvas
类更改为canvas.before
时,代码才起作用。我认为我对如何使用这些工具的理解仍然很差。因此,我希望有人能帮助我澄清我做错了什么,以及如何使用canvas
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中。由于标签绘制发生在画布中,因此将处于旋转状态