Динамические файлы изображений в KV - самый простой подход? - PullRequest
0 голосов
/ 09 июня 2019

Я хочу включить файл динамического изображения в мое приложение Kivy.Мне удалось передать строку имени файла из моего файла .py в мой файл .kv, но по какой-то причине я не могу открыть изображение с помощью этой переменной (только путем жесткой записи).

Я погуглил и нашел только слишком сложные подходы к этому.Я пытался скопировать, вставить их все и как-то вписать, но ни один из них не помог.Теперь мне интересно, знает ли кто-нибудь из вас более простое решение моей проблемы.

Вот фрагмент моего файла .py, в котором я использую идентификатор для динамического создания имени файла

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()
* 1007.* файл .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 («Ошибка чтения файла <>»).

Я большой новичок в КВ, поэтому я не очень хорошо понимаю все это, поэтому надеюсь, что вы, ребята, сможете мне помочь.

...