【问题标题】:How to set a screen background image in Kivy如何在 Kivy 中设置屏幕背景图像
【发布时间】:2015-09-19 15:54:58
【问题描述】:

我知道如何制作彩色背景,但我似乎找不到任何有用的东西来将图像设置为背景,非常感谢我的代码提供任何帮助。

这是我的 .py 文件:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
#from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.core.window import Window
from kivy.core.image import Image
#from kivy.graphics import BorderImage
from kivy.graphics import Color, Rectangle
#from kivy.uix.image import AsyncImage


class StartScreen(Screen):
    pass

class GameScreen(Screen):
    pass

class RootScreen(ScreenManager):
    pass


class MainApp(App):
    def build(self):
        return RootScreen()

if __name__ == "__main__":
    MainApp().run()

还有.kv文件:

#:import FadeTransition kivy.uix.screenmanager.FadeTransition

<RootScreen>:
    transition: FadeTransition() 
    StartScreen:
    GameScreen:

<StartScreen>:
    name: "start"
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
        Image:
            source: "lights.png"
    FloatLayout:
        Image:     # This part doesn't seem to work
            source: "lights.png"
            allow_stretch: True
            keep_ratio: False
            size_hint: 1, 1
        Button:
            text: "Play!"
            size_hint: 0.4, 0.3
            pos_hint: {'center_x':.5, 'center_y':.5}
            font_size: 70
            on_release: root.manager.current = "game"
<GameScreen>:
    name: "game"
    FloatLayout:
        Button:
            text: "Nazaj!"
            font_size: 70
            on_release: root.manager.current  = "start"

【问题讨论】:

    标签: kivy


    【解决方案1】:
    canvas.before:
            Rectangle:
                pos: self.pos
                size: self.size
            Image:
                source: "lights.png"
    

    图像是一个小部件,你不能把它放在画布上。

    您*可以做的只是为 Rectangle 设置一个来源:

    canvas.before:
            Rectangle:
                pos: self.pos
                size: self.size
                source: 'lights.png'
    

    ...或将您的图像放在其他小部件的后面,将它们放在容器布局中。

    【讨论】:

    • 感谢您的回答,但不幸的是它似乎没有做任何事情。我尝试直接在屏幕上添加图像并作为浮动布局中的小部件,但它们都没有做任何更改,它不显示任何图像,我不明白为什么。
    • 对不起,它有效,谢谢!我只是没有将图像保存在同一目录中。
    • 谢谢@inclement。这对我的应用程序有帮助。
    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2021-05-18
    • 2011-04-07
    • 1970-01-01
    • 2020-09-17
    • 2017-08-28
    相关资源
    最近更新 更多