如何在kivy中将屏幕背景设置为图像

Posted

技术标签:

【中文标题】如何在kivy中将屏幕背景设置为图像【英文标题】:How do I set the screen background to image in kivy 【发布时间】:2020-10-27 16:21:54 【问题描述】:

如何在此代码中将背景更改为图像而不使用任何 .Kv 文件。我想将屏幕背景设置为图像,但只看到带有 .kv 文件的图像

import kivy
from kivy.app import App
from kivy.uix.floatlayout import Floatlayout
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.label import Label 


class LandingScreen(FloatLayout):
    def __init__(self, **kwargs):
        super(LandingScreen, self).__init__(**kwargs)

         self.score=0

        # put whatever pos_hint value you want.          
        self.add_widget(Label(text='SCORE: ' + str(score), size_hint=(0.5, 0.5)))
        self.btn1=Button(text='button1 ', size_hint=(0.5, 0.5), 
        on_press=self.click_b1))
        self.btn2=Button(text='button2', size_hint=(0.5, 0.5), 
        on_press=self.click_b2))


            
        self.add_widget(self.btn1)
        self.add_widget(self.btn2)

        def click_b1(self, instance):
             
             score +=10
        def click_b2(self, instance):
             score += 10
       
class SplashApp(App):
    def build(self):
        return LandingScreen()

if __name__ == '__main__':
    SplashApp().run()

【问题讨论】:

【参考方案1】:

kv 中更容易做到,但是你可以在没有kv 的情况下做到这一点,只需将此代码添加到LandingScreen__init__() 方法中即可:

    with self.canvas.before:
        self.bg = Rectangle(pos=self.pos, size=self.size, source='background.png')

LandingScreen 的大小发生变化时,您还需要调整背景的大小。为此,请将此方法添加到 LandingScreen:

def on_size(self, *args):
    self.bg.size = self.size

【讨论】:

以上是关于如何在kivy中将屏幕背景设置为图像的主要内容,如果未能解决你的问题,请参考以下文章

在 Kivy 中将图像对象作为按钮背景传递

如何在图像视图中将图像设置为适合屏幕

如何在 Kivy 中将图像放入动态文本中

如何在任务栏中将图标设置为 kivy 应用程序?

如何设置透明背景颜色并对 kivy 图像进行抗锯齿处理?

如何在swift中将背景图像设置为colorWithPatternImage