对象在python中没有属性

对象在python中没有属性

本文介绍了AttributeError:"NoneType"对象在python中没有属性"text"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用python-2.7kivy.当我运行test.py时会给出错误AttributeError: 'NoneType' object has no attribute 'text' in python?
有人告诉我什么是错误的吗?

I am using python-2.7 and kivy.When i run test.py then it gives error AttributeError: 'NoneType' object has no attribute 'text' in python?
Someone tell me what is mistake?

import kivy

kivy.require('1.9.0')  # replace with your current kivy version !
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.properties import ObjectProperty


Window.size = (500, 230)


class GroupScreen(Screen):
    groupName = ObjectProperty(None)

    def __init__(self, **kwargs):
        super(GroupScreen, self).__init__(**kwargs)
        self.groupName.text = "Test"


class Group(App):

    def build(self):
        self.root = Builder.load_file('test.kv')
        return self.root



if __name__ == '__main__':
    Group().run()

test.kv

GroupScreen:
    groupName:groupName

    GridLayout:
        cols: 2
        padding : 30,30
        spacing: 10, 10
        row_default_height: '40dp'

        Label:
            text: 'Test'

        SingleLineTextInput:
            id: groupName

        GreenButton:
            text: 'Ok'

        GreenButton:
            text: 'Cancel'

        Label:

        Label:



<SingleLineTextInput@TextInput>:
    multiline: False


<GreenButton@Button>:
    background_color: 1, 1, 1, 1
    size_hint_y: None
    height: self.parent.height * 0.150

推荐答案

如果要在.kv中创建对象,则:

If you are going to create the object in the .kv:

GroupScreen:
    groupName:groupName
    ...

那么就没有必要在.py中声明它.

Then it is not necessary to declare it in the .py.

另一方面,将子项添加到窗口小部件不是立即进行的,因此在这些情况下始终建议使用Clock.

On the other hand the addition of children to a widget is not instantaneous so it is always recommended in these cases to use Clock.

import kivy

kivy.require('1.9.0')  # replace with your current kivy version !
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.clock import Clock


Window.size = (500, 230)


class GroupScreen(Screen):
    def __init__(self, **kwargs):
        super(GroupScreen, self).__init__(**kwargs)
        Clock.schedule_once(lambda dt: setattr(self.groupName, 'text', "Test"))

class Group(App):
    def build(self):
        self.root = Builder.load_file('test.kv')
        return self.root


if __name__ == '__main__':
    Group().run()

这篇关于AttributeError:"NoneType"对象在python中没有属性"text"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-22 22:49