无法使用kivy显示图像
Can't display image with kivy
我想做一个有两个屏幕的kivy程序。
在第一个屏幕上只有一个按钮可以让您转到下一个屏幕。
在第二个屏幕上有两个按钮,一个用于返回第一个屏幕,另一个用于在整个屏幕上显示图像。
我通过创建一个函数来做到这一点,该函数创建一个图像并将其添加到 Box Layout。
我知道,图像不会全屏显示,但我不知道更好的解决方案。
但是当我点击按钮时,整个程序崩溃了。
这是源代码:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
class Manager(ScreenManager):
pass
class FirstScreen(Screen):
def change_text(self):
self.manager.current = 'second'
class SecondScreen(Screen):
def display_image(self):
bild = Image(source='Bild1.png')
box1.add_widget(bild)
root_widget = Builder.load_string('''
Manager:
FirstScreen:
SecondScreen:
<FirstScreen>:
name: 'first'
BoxLayout:
orientation: 'vertical'
Button:
id: b1
text: 'Go to next Screen'
on_release: root.change_text()
<SecondScreen>:
name: 'second'
BoxLayout:
id: box1
orientation: 'vertical'
Button:
id: b2
text: 'Go back'
on_release: app.root.current = 'first'
Button:
id: b3
text: 'suprise'
on_release: root.display_image()
''')
class Caption(App):
def build(self):
return root_widget
Caption().run()
这是错误消息:
File "<string>", line 26, in <module>
File "img.py", line 18, in display_image
box1.add_widget(bild)
NameError: global name 'box1' is not defined
为了使用 ID,您需要通过根规则小部件上的 ids
对象访问它们。所以你应该使用 self.ids.box1.add_widget(bild)
.
而不是 box1.add_widget(bild)
我想做一个有两个屏幕的kivy程序。 在第一个屏幕上只有一个按钮可以让您转到下一个屏幕。 在第二个屏幕上有两个按钮,一个用于返回第一个屏幕,另一个用于在整个屏幕上显示图像。 我通过创建一个函数来做到这一点,该函数创建一个图像并将其添加到 Box Layout。 我知道,图像不会全屏显示,但我不知道更好的解决方案。 但是当我点击按钮时,整个程序崩溃了。 这是源代码:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
class Manager(ScreenManager):
pass
class FirstScreen(Screen):
def change_text(self):
self.manager.current = 'second'
class SecondScreen(Screen):
def display_image(self):
bild = Image(source='Bild1.png')
box1.add_widget(bild)
root_widget = Builder.load_string('''
Manager:
FirstScreen:
SecondScreen:
<FirstScreen>:
name: 'first'
BoxLayout:
orientation: 'vertical'
Button:
id: b1
text: 'Go to next Screen'
on_release: root.change_text()
<SecondScreen>:
name: 'second'
BoxLayout:
id: box1
orientation: 'vertical'
Button:
id: b2
text: 'Go back'
on_release: app.root.current = 'first'
Button:
id: b3
text: 'suprise'
on_release: root.display_image()
''')
class Caption(App):
def build(self):
return root_widget
Caption().run()
这是错误消息:
File "<string>", line 26, in <module>
File "img.py", line 18, in display_image
box1.add_widget(bild)
NameError: global name 'box1' is not defined
为了使用 ID,您需要通过根规则小部件上的 ids
对象访问它们。所以你应该使用 self.ids.box1.add_widget(bild)
.
box1.add_widget(bild)