我想通过指向图像ID来访问图像的源。当我不使用ScreenManager尝试这种方式时,它可以正常工作,但使用ScreenManager并给出以下错误消息:
AttributeError:'kivy.properties.ObjectProperty'对象没有属性'source'
所以您有任何想法如何使用ScreenManager访问我的图像吗?
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)
print(img1.source)
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()
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"
非常感谢!
您可以按照描述的方式访问Image
,但是在类加载时甚至在加载print
文件之前,都将在任何方法之外的类中执行kv
语句。
您可以这样访问Image
:
print(Gui.get_screen('main').img1)
或在MainWindow
类的方法中,可以使用:
print(self.img1)
但是您必须等到App
开始