【问题标题】:How to refresh background image of Popup in kivy?如何在kivy中刷新Popup的背景图片?
【发布时间】:2018-09-08 10:02:42
【问题描述】:

我正在使用 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()

【问题讨论】:

    标签: python python-2.7 kivy


    【解决方案1】:

    使用Popup 的on_open 事件刷新popup 的背景加载。

    示例

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

    输出

    【讨论】:

    • 谢谢。如果我在运行main.py 后用相同的名称替换第二个图像yellow.png,那么它会显示旧图像。它不会显示新图像。如果我再次运行main.py,则会显示新图像。我必须再次运行才能看到替换图像。否则我会看到旧图像
    • 我无法重现问题。请分享您更改弹出窗口背景的代码。
    猜你喜欢
    • 2020-07-27
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多