Kivy,TypeError:“NoneType”对象没有属性“\u getitem”

2024-10-01 13:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

在尝试运行一个kivy示例应用程序时,我遇到了上面的错误。在

下面是python代码:

在主.py. 在

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import Screen, ScreenManager, FadeTransition

class MyScreenManager(ScreenManager):
    pass

class MainScreen(Screen):
    pass

class MailScreen(Screen):
    pass

class ProjectScreen(Screen):
    pass

class IntroScreen(Screen):
    pass

class GsaMain(BoxLayout):
    pass

class GsamApp(App):
    def build(self):
        return MyScreenManager()

GsamApp().run()

kivy文件名为gsam.kv在

^{pr2}$

我搞不清回溯指向的是什么。在

 Traceback (most recent call last):
   File "main.py", line 28, in <module>
     GsamApp().run()
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/app.py", line 797, in run
     self.load_kv(filename=self.kv_file)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/app.py", line 594, in load_kv
     root = Builder.load_file(rfilename)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/lang.py", line 1749, in load_file
     return self.load_string(data, **kwargs)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/lang.py", line 1796, in load_string
     parser = Parser(content=string, filename=fn)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/lang.py", line 1185, in __init__
     self.parse(content)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/lang.py", line 1287, in parse
     objects, remaining_lines = self.parse_level(0, lines)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/lang.py", line 1384, in parse_level
     level + 1, lines[i:], spaces)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/lang.py", line 1384, in parse_level
     level + 1, lines[i:], spaces)
   File "/home/afidegnum/gsam/local/lib/python2.7/site-packages/kivy/lang.py", line 1437, in parse_level
     if current_property[:3] == 'on_':
 TypeError: 'NoneType' object has no attribute '__getitem__'

我需要在python代码中定义一个函数吗?在


Tags: inpyhomelanglibpackageslocalline
2条回答

我已经对你的代码进行了修改并生成了一个有效的代码。除了上面给出的建议,我还注意到在你的.kv文件中,有很多缩进问题。我在任何必要的地方都发表了意见,我做出了这些改变。查找以下工作代码:

在主.py在

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout   
from kivy.uix.screenmanager import Screen, ScreenManager, FadeTransition

class MyScreenManager(ScreenManager):
    pass

class MainScreen(Screen):
    pass

class MailScreen(Screen):
    pass

class ChatScreen(Screen):
    pass

class ProjectScreen(Screen):
    pass

class IntroScreen(Screen):
    pass

class GsaMain(BoxLayout):
    pass

class GsamApp(App):
    def build(self):
        sm = MyScreenManager()
        sm.add_widget(IntroScreen(name="introscreen"))
        sm.add_widget(MainScreen(name="main"))
        sm.add_widget(MailScreen(name="mailscreen"))
        sm.add_widget(ProjectScreen(name="prjcscreen"))
        sm.add_widget(ChatScreen(name='chat'))
        return sm

GsamApp().run()

在gsma.kv在

^{pr2}$

在主.py在

  • 没有ChatScreen。定义一个:

    class ChatScreen(Screen):
        pass
    
  • ProjectScreen应重命名为PrjcScreen,以匹配gsam.kv中的名称。(或在gsam.kv中更改PrjcScreen

在gsam.kv在

  • color->;^{}

    ^{pr2}$

    ->

    Color:
        rgba: 1,0,0,1
    
  • ^{}没有Label参数:

            Rectangle:
                size: 50, 50
                # Label: "Post Projects"  < -
                id: projct
            Rectangle:
                size: 50, 50
                # Label: "Messages"  < -
                id: msgs
    

相关问题 更多 >