【问题标题】:Kivy Popup ErrorKivy 弹出错误
【发布时间】:2015-01-26 18:33:34
【问题描述】:

我似乎无法打开我的弹出窗口,因为它没有“定义”。一切都从 Python 传递到 Kivy 语言(因为我更容易跟踪一切),这就是问题所在。

<StoryScreen>:
name: "story"
BoxLayout:
    id: storyScreen
    Popup:
        id: "popup"
        title: "Settings"
        on_parent: 
            if self.parent == storyScreen: self.parent.remove_widget(self)
        GridLayout:
            cols: 2
            Accordion:
                orientation: "vertical"

                AccordionItem:
                    title: "Main Character"
                    size_hint:.9, 0.10
                    pos_hint: {'x':0.05, 'y':0.85}

                    Label: 
                        id: first
                        text: "First Name"

                AccordionItem:
                    title: "Love Interest"
                    size_hint: .9, 0.10
                    pos_hint: {'x':0.05, 'y':0.70}
            Button:
                text: "What's up"
    Button: 
        text: "Press to open popup"
        on_release: popup.open()

    Label: 
        text: "This is a label"

我的回溯错误显示:

   File "/Applications/Kivy.app/Contents/Resources/kivy/kivy/lang.py", line 1299, in custom_callback
     exec(__kvlang__.co_value, idmap)
   File "./story.kv", line 54, in <module>
     on_release: popup.open()
 NameError: name 'popup' is not defined

即使我尝试添加到 Python

class popup(Popup):
    pass

它仍然会引发定义错误。帮忙?

【问题讨论】:

    标签: python-2.7 popup kivy


    【解决方案1】:

    kv 语言ids 是 Python 标识符。您不能调用 Python 变量 "popup"(因为引号),所以它与 kv 相同。尝试使用id: popup 而不是id: "popup"

    【讨论】:

    • 真的就这么简单。谢谢! :D
    【解决方案2】:

    嗯...弹出窗口确实没有定义,这就是问题所在。

    你需要得到一个弹出类的实例(例如Popup()),这样你就可以运行Popup().open()之类的东西。

    这仅适用于 kivy 弹出类,对于您自己的子类,您必须将其导入 kv 范围,例如#:import Yourpopupname main.Yourpopupname,那么你可以做Yourpopupname().open()。我说yourpopupname 而不是你选择的popup,因为这是一个非常糟糕的名字,它令人困惑,因为它与kivy 的Popup 的大小写相同。此外,您通常应该使用以大写字母开头的小部件名称,因为 kv 语言依赖于此来识别它们。

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      相关资源
      最近更新 更多