无法用kivy显示图像

Posted

技术标签:

【中文标题】无法用kivy显示图像【英文标题】:Can't display image with kivy 【发布时间】:2015-03-18 19:23:32 【问题描述】:

我想制作一个有两个屏幕的 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

【问题讨论】:

你能给我们回溯吗? 好的,这里是错误消息 【参考方案1】:

要使用 ID,您需要通过根规则小部件上的 ids 对象访问它们。所以你应该使用self.ids.box1.add_widget(bild),而不是box1.add_widget(bild)

【讨论】:

以上是关于无法用kivy显示图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kivy 的 Scrollable GridLayout 中显示图像

kivy按钮图像显示问题

如何在kivy中显示和删除图像?

.gif 图像作为源代码在 Windows kivy 程序中运行良好。通过 kivy Launcher 运行显示 gif 图像的背景

Kivy应用程序中的图像在填满内存后不显示(显示黑框),未释放

从 sqlite3 检索图像并在 Kivy 图像小部件中显示 - ValueError