2015-07-02 27 views
6

Ich weiß, wie man einen farbigen Hintergrund bildet, aber ich kann nichts nützliches finden, um das Bild als Hintergrund einzustellen und würde wirklich für jede Hilfe mit meinem Code dankbar sein.Wie man ein Bildschirmhintergrundbild in Kivy einstellt

Hier meine Py-Datei ist:

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() 

Und .kv Datei:

#: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" 

Antwort

6
canvas.before: 
     Rectangle: 
      pos: self.pos 
      size: self.size 
     Image: 
      source: "lights.png" 

Bild ist ein Widget, können Sie legen Sie es nicht auf der Leinwand.

Was Sie * tun können, ist entweder nur eine Quelle für das Rechteck gesetzt:

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

... oder Ihr Bild hinter den anderen Widgets, indem sie in einem Container Layout setzen.

+0

Vielen Dank für Ihre Antwort, aber leider scheint es nichts zu tun. Ich habe versucht, das Bild direkt auf dem Bildschirm und als Widget in Float-Layout hinzuzufügen, aber keiner von ihnen hat sich geändert, es zeigt kein Bild und ich verstehe nicht warum. – Larisa

+0

Tut mir leid, es funktioniert, danke! Ich habe das Bild gerade nicht im selben Verzeichnis gespeichert. – Larisa