Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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_Python 3.x_Kivy_Kivy Language - Fatal编程技术网

Python 在Kivy中加载图像

Python 在Kivy中加载图像,python,python-3.x,kivy,kivy-language,Python,Python 3.x,Kivy,Kivy Language,我希望在布局的中心显示一个图像。我想不出来。有没有办法将图像显示在布局的中心,直到动画停止 这是我的密码 from kivy.app import App from kivy.lang import Builder from kivy.uix.floatlayout import FloatLayout from kivy.animation import Animation from kivy.properties import NumericProperty Builder.load_st

我希望在布局的中心显示一个图像。我想不出来。有没有办法将图像显示在布局的中心,直到动画停止

这是我的密码

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.animation import Animation
from kivy.properties import NumericProperty

Builder.load_string('''                               
<Loading>:
    canvas:
        Rotate:
            angle: root.angle
            origin: self.center
        Color:
            rgb: .0, 0, -.1
        Ellipse:    
            size: min(self.size), min(self.size)
            pos: 0.5*self.size[0] - 0.5*min(self.size), 0.5*self.size[1] - 0.5*min(self.size)
        Color:
            rgb: .5, 0, 1
        Ellipse:    
            size: 30, 30
            pos: 0.5*root.size[0]+25, 0.8*root.size[1]-25
''')


class Loading(FloatLayout):
    angle = NumericProperty(0)

    def __init__(self, **kwargs):
        super(Loading, self).__init__(**kwargs)
        anim = Animation(angle = 1009, duration=2.5)
        anim += Animation(angle = 1900, duration=2.5)
        anim.repeat = True
        anim.start(self)

    def on_angle(self, item, angle):
       if angle == 360:
           item.angle = 0


class TestApp(App):
    def build(self):

        return Loading()

TestApp().run()
从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.floatlayout导入floatlayout
从kivy.animation导入动画
从kivy.properties导入NumericProperty
Builder.load_字符串(“”)
:
画布:
轮换:
角度:root.angle
来源:自我中心
颜色:
rgb:.0,0,-.1
椭圆:
大小:最小值(自身大小),最小值(自身大小)
位置:0.5*self.size[0]-0.5*min(self.size),0.5*self.size[1]-0.5*min(self.size)
颜色:
rgb:.5、0、1
椭圆:
尺码:30,30
位置:0.5*root.size[0]+25,0.8*root.size[1]-25
''')
类加载(浮动布局):
角度=数值属性(0)
定义初始(自我,**kwargs):
超级(自加载)。\uuuuu初始化(**kwargs)
动画=动画(角度=1009,持续时间=2.5)
动画+=动画(角度=1900,持续时间=2.5)
anim.repeat=True
动画开始(自我)
def on_角度(自身、项目、角度):
如果角度==360:
item.angle=0
类TestApp(应用程序):
def生成(自):
返回加载()
TestApp().run()

我认为你的画布不应该像那样“松散”。将它放在一个小部件中,这将允许您使用Kivy的各种布局来安排事情。它还允许您在小部件上方插入图像,而无需使图像旋转

第二件事,使用rgba以便可以为背景指定透明度。下面的示例对我适用,只需将生成器字符串替换为:

"""<Loading>:
FloatLayout:
    Image:
        source: 'logo.png'
    Widget:
        canvas:
            Rotate:
                angle: root.angle
                origin: self.center
            Color:
                rgba: 1, 1, 1, 0

            Ellipse:    
                size: min(self.size), min(self.size)
                pos: 0.5*self.size[0] - 0.5*min(self.size), 0.5*self.size[1] - 0.5*min(self.size)
            Color:
                rgba: .5, 0, 1, 1

            Ellipse:    
                size: 30, 30
                pos: 0.5*root.size[0]+25, 0.8*root.size[1]-25
            Color:
                rgba: 0.5, 0, 1"""
“”:
浮动布局:
图片:
来源:“logo.png”
小装置:
画布:
轮换:
角度:root.angle
来源:自我中心
颜色:
rgba:1,1,1,0
椭圆:
大小:最小值(自身大小),最小值(自身大小)
位置:0.5*self.size[0]-0.5*min(self.size),0.5*self.size[1]-0.5*min(self.size)
颜色:
rgba:.5,0,1,1
椭圆:
尺码:30,30
位置:0.5*root.size[0]+25,0.8*root.size[1]-25
颜色:
rgba:0.5,0,1英寸
我还附上了我用于示例的部门徽标。我让您调整大小并添加适当的调整调用。

一定要检查Kivy存储库中的文件夹。