Как установить фоновое изображение в Kivy? (Изображение продолжает покрывать все остальные кнопки и объекты)

#python #oop #user-interface #kivy

#python #ооп #пользовательский интерфейс #kivy

Вопрос:

Я новичок в Kivy и пытаюсь создать простой графический интерфейс для рабочего стола для небольшого проекта. Однако меня сбил с толку вопрос о том, как добавить фоновое изображение, и я потратил дни на просмотр документации Kivy, руководств и форумов, пытаясь найти решение, но по какой-то причине нет четких инструкций о том, как это сделать. Мне действительно нужна ваша помощь. Приведенные инструкции совсем не помогли, поскольку в документах Kivy говорилось о добавлении цвета фона и размещении поверх него изображения. Это не то, что мне нужно, мне нужно добавить фоновое изображение для всех кнопок и объектов. Я не знаю, как отправить фоновое изображение назад, оно продолжает появляться поверх всего. Я надеюсь, вы сможете мне помочь.

Вот мой код:

 # -*- coding: cp1252 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.image import Image
from kivy.animation import Animation
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.clock import Clock
from kivy.graphics import Color, Rectangle
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.floatlayout import FloatLayout

# Create both screens. Please note the root.manager.current: this is how
# you can control the ScreenManager from kv. Each screen has by default a
# property manager that gives you the instance of the ScreenManager used.
Builder.load_string("""
<MenuScreen>:
    FloatLayout:
        Button:
            text: "LEARN"
            font_name: 'DK Lemon Yellow Sun.otf'
            font_size: '50sp'
            pos: 60, 180
            size_hint: .4, .4
        Button:
            text: "TRANSLATE"
            font_name: 'DK Lemon Yellow Sun.otf'
            font_size: '50sp'
            pos: 410, 180
            size_hint: .4, .4
        Button:
            text: "QUIT"
            font_size: '50sp'
            font_name: 'DK Lemon Yellow Sun.otf'
            pos: 60, 50
            size_hint: .1, .1
        Label:
            text: 'Education App'
            pos: -10, 200
            font_size: '70sp'
            font_name: 'DK Lemon Yellow Sun.otf'
        AsyncImage:
            source: 'blackboard.png'
            size_hint: 1, .7
            pos_hint: {'center_x':.5, 'center_y': .5}



<SettingsScreen>:
    BoxLayout:
        Button:
            text: 'My settings button'
        Button:
            text: 'Back to menu'
            on_press: root.manager.current = 'menu'
""")




class MenuScreen(Screen):
    pass


class SettingsScreen(Screen):
    pass


sm = ScreenManager(transition=FadeTransition())
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))



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

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

Результирующий вывод kivy выглядит следующим образом:

введите описание изображения здесь

Любая помощь будет оценена. Спасибо. Большое вам спасибо.

Ответ №1:

Добавьте это после вашего <MenuScreen>: тега:

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

Комментарии:

1. куда мне его вставить?

2. после <MenuScreen>: