Saya ingin mengakses sumber gambar saya dengan menunjuk ke ID-nya. Ketika saya mencobanya dengan cara ini tanpa menggunakan ScreenManager berfungsi dengan baik tetapi menggunakan ScreenManager dan memberikan pesan kesalahan berikut:

AttributeError: objek 'kivy.properties.ObjectProperty' tidak memiliki atribut 'sumber'

Jadi, apakah Anda tahu cara mengakses gambar saya menggunakan ScreenManager?

Kode Python:

from kivy.app import App
from kivy.properties import ObjectProperty

from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image


class MainWindow(Screen):

    img1 = ObjectProperty(None)

def __init__(self, **kwargs):
    super(MainWindow, self).__init__(**kwargs)

    self.print_image()

def print_image(self):
    print(self.img1)


class SecondWindow(Screen):
    pass


class WindowManager(ScreenManager):
    pass


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


class MyApp(App):
    def build(self):
        return Gui


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

Kode kv:

WindowManager:
    MainWindow:
    SecondWindow:

<MainWindow>:
    name: "main"
    img1: img1

    Button:
        id: b1
        text: "Submit"

    Image:
        id: img1
        source: "IMG_8681.jpg"


<SecondWindow>:
    name: "second"

    Button:
        text: "Go Back"
        on_release:
            app.root.current = "main"
            root.manager.transition.direction = "right"

Terima kasih banyak sebelumnya!

0
TheHummel 18 Juni 2020, 01:33

1 menjawab

Jawaban Terbaik

Anda dapat mengakses Image seperti yang Anda jelaskan, tetapi pernyataan print di kelas, di luar metode apa pun, dijalankan saat kelas dimuat dan bahkan sebelum file kv dimuat.

Anda dapat mengakses Image seperti ini:

print(Gui.get_screen('main').img1)

Atau dalam metode di kelas MainWindow, Anda dapat menggunakan:

print(self.img1)

Tapi Anda harus menunggu sampai App dimulai

1
John Anderson 18 Juni 2020, 00:50