KV中的动态图像文件-最简单的方法?

时间:2019-06-09 20:40:21

标签: python image dynamic kivy kivy-language

我想在我的Kivy App中包含动态图像文件。我设法将文件名的字符串从我的.py文件传递到了我的.kv文件,但是由于某些原因,我无法使用此变量打开图像(仅通过硬编码)。

我在Google周围四处搜寻,但发现的方法过于复杂。我试图将它们全部粘贴并以某种方式适合它们,但没有一个真正起作用。现在,我想知道是否有人知道解决我问题的简单方法。

这是我的.py文件的摘要,在其中我使用ID动态生成文件名

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from database import DataBase


class DetailedResults(Screen):

    def on_enter(self, *args):
        filename = "itemdiffplot" + str(self.key_id) + ".png"
        self.filename.text = filename

class WindowManager(ScreenManager):
    pass

kv = Builder.load_file("my.kv")

sm = WindowManager()
db = DataBase("keys.txt")

screens = [DetailedResults(name="d_results")] # Gotta add all my Windows here always
for screen in screens:
    sm.add_widget(screen)

sm.current = "enter_key"

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

if __name__ == "__main__":
    MyMainApp().run()

.kv文件,我首先在其中显示“文件名”作为标签,然后尝试将其作为图像打开:

WindowManager:
    DetailedResults:

<DetailedResults>:
    name: "d_results"
    filename: filename
    FloatLayout:
        cols:1

        FloatLayout:
            size: root.width, root.height/2

            Label:
                pos_hint: {"x":0.5, "top":0.7}
                size_hint: 0.4, 0.12
                id: filename
                multiline: False
                font_size: (root.width**2 + root.height**2) / 14**4

            Image:
                source: ("<%s>" % filename)

输出:

https://i.imgur.com/8jcR9UW.png

现在,我收到以下错误消息:我要打开的图像不是字符串,而是Label对象(“读取文件<>”时出错)。

我是一位非常重要的KV新手,所以我不太了解所有这些内容,因此希望你们能为我提供帮助。

0 个答案:

没有答案