Как обновить фоновое изображение Popup в киве? - PullRequest
0 голосов
/ 08 сентября 2018

Я использую Python 2.7 и KIVY. Я запускаю test.py, и после замены test.png прямо из папки click on press me новое изображение не отображается. Может кто-нибудь сказать мне, как обновить изображение?

test.py

from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.lang import Builder


Builder.load_string('''
#:kivy 1.10.0

<abc>:
    background: 'test.png'

''')


class abc(Popup):
    pass


class PopupApp(App):
    title = 'Popup Demo'

    def build(self):
        self._popup = abc()
        return Button(text="press me", on_press=self._popup.open)


PopupApp().run()

1 Ответ

0 голосов
/ 08 сентября 2018

Используйте событие Popup's on_open для обновления загрузки фона всплывающего окна.

Пример

main.py

from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.lang import Builder

Builder.load_string('''
#:kivy 1.11.0

<abc>:
    title : "change title color"
    title_color: 1, 0, 0, 1    # red title
    size_hint: None, None
    size: 400, 400

    BoxLayout:
        orientation: "vertical"

        GridLayout:
            cols: 1
            Label:
                bold: True
                text: "make label bold"
                color: 1, 0, 0, 1    # red color text

            Label:
                markup: True
                text: "[b][color=008000]make[/color] label [color=3333ff]bold[/color][/b]"

''')


class abc(Popup):

    def __init__(self, **kwargs):
        super(abc, self).__init__(**kwargs)
        self.i = 0

    def on_open(self):
        if self.i % 2 == 0:
            self.background = 'DSC08518.JPG'
        else:
            self.background = 'yellow.png'
        self.i += 1


class PopupApp(App):
    title = 'Popup Demo'

    def build(self):
        self._popup = abc()
        return Button(text="press me", on_release=self._popup.open)


PopupApp().run()

выход

Img01 Img02

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...