代码之家  ›  专栏  ›  技术社区  ›  Narendra Singh

在Accordion kivy python中使用PageLayout

  •  0
  • Narendra Singh  · 技术社区  · 10 年前

    我尝试在Accordion中使用PageLayout,但当我尝试单击任何位置时,它给了我这个错误。如何使其工作。

    Traceback (most recent call last):
       File "accmain.py", line 19, in <module>
         LiuApp().run()
    
       File "/usr/lib/python2.7/dist-packages/kivy/app.py", line 828, in run
         runTouchApp()
    
       File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 487, in runTouchApp
         EventLoop.window.mainloop()
    
       File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py", line 619, in mainloop
         self._mainloop()
    
       File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py", line 362, in _mainloop
         EventLoop.idle()
    
       File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 330, in idle
         self.dispatch_input()
    
       File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 315, in dispatch_input
         post_dispatch_input(*pop(0))
    
       File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 221, in post_dispatch_input
         listener.dispatch('on_motion', etype, me)
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/core/window/__init__.py", line 1034, in on_motion
         self.dispatch('on_touch_up', me)
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/core/window/__init__.py", line 1070, in on_touch_up
         if w.dispatch('on_touch_up', touch):
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/uix/widget.py", line 454, in on_touch_up
         if child.dispatch('on_touch_up', touch):
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/uix/widget.py", line 454, in on_touch_up
         if child.dispatch('on_touch_up', touch):
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/uix/widget.py", line 454, in on_touch_up
         if child.dispatch('on_touch_up', touch):
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/uix/widget.py", line 454, in on_touch_up
         if child.dispatch('on_touch_up', touch):
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/uix/widget.py", line 454, in on_touch_up
         if child.dispatch('on_touch_up', touch):
    
       File "_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7146)
    
       File "/usr/lib/python2.7/dist-packages/kivy/uix/pagelayout.py", line 201, in on_touch_up
    
    return self.children[-self.page + 1].on_touch_up(touch)
    
     IndexError: list index out of range
    

    这是我迄今为止为得到这个错误所做的工作。 accmain公司。py文件

    from kivy.app import App  
    from kivy.uix.accordion import Accordion
    
    class RunLiu(Accordion):
        def __init__(self, **kwargs):
            super(RunLiu, self).__init__(**kwargs)
    
    class LiuApp(App):
        def build(self):
            root = RunLiu()
            return root
    
    if __name__ == "__main__":
        LiuApp().run()`
    

    线路接口单元。kv文件

    <RunLiu>:
        orientation: "vertical"
        AccordionItem:
            title: "Item 1"
            PageLayout:
                Label:
                    text: "yee"
    
        AccordionItem:
            title: "Item 2"
            Label:
                text: "hey there"
    
        AccordionItem:
            title: "3rd tab"
            Label:
                text: 'Item 3'
    

    很抱歉格式化,我对堆栈溢出和kivy都很陌生。我的文件中的所有缩进都是正确的。

    1 回复  |  直到 10 年前
        1
  •  0
  •   Peter Badida I'm Geeker    10 年前

    我有点不理解你的问题。在我看来,要么你没有发布整个代码,要么你打错了,要么你有一个旧版本的kivy。在主分支(1.9.2)上,此代码不会抛出任何错误,您可以毫无问题地列出页面(当然Label没有背景,因此会重叠):

    from kivy.app import App  
    from kivy.lang import Builder
    from kivy.uix.accordion import Accordion
    Builder.load_string('''
    <RunLiu>:
        orientation: "vertical"
        AccordionItem:
            title: "Item 1"
            PageLayout:
                Label:
                    text: "yee"
                Label:
                    text: "ya"
                Label:
                    text: "yas"
    
        AccordionItem:
            title: "Item 2"
            Label:
                text: "hey there"
    
        AccordionItem:
            title: "3rd tab"
            Label:
                text: 'Item 3'
    ''')
    
    class RunLiu(Accordion):
        def __init__(self, **kwargs):
            super(RunLiu, self).__init__(**kwargs)
    
    class LiuApp(App):
        def build(self):
            root = RunLiu()
            return root
    
    if __name__ == "__main__":
        LiuApp().run()