Я хочу включить файл динамического изображения в мое приложение 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 («Ошибка чтения файла <>»).
Я большой новичок в КВ, поэтому я не очень хорошо понимаю все это, поэтому надеюсь, что вы, ребята, сможете мне помочь.