Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确使用kivy图形上下文指令_Python_Kivy - Fatal编程技术网

Python 如何正确使用kivy图形上下文指令

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

嗨,我最近尝试了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: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中。由于标签绘制发生在画布中,因此将处于旋转状态