Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “如何解决错误”;非类型对象没有属性';绑定&x27&引用;?_Python_Kivy - Fatal编程技术网

Python “如何解决错误”;非类型对象没有属性';绑定&x27&引用;?

Python “如何解决错误”;非类型对象没有属性';绑定&x27&引用;?,python,kivy,Python,Kivy,我刚开始在kivy中创建一个新的应用程序,我不知道为什么在试图从应用程序类调用StringProperty kujund时会出现错误 Python: from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen from kivy.properties import StringProperty from kivy.clock impo

我刚开始在kivy中创建一个新的应用程序,我不知道为什么在试图从应用程序类调用StringProperty kujund时会出现错误

Python:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
from kivy.clock import Clock

kv = Builder.load_file("autogeo.kv")
kujund = "null"

class autogeo(App):
    manager = ScreenManager()

    Screen1 = Screen(name="esimene")
    Screen2 = Screen(name='teine')
    Screen3 = Screen(name="kolmas")
    Screen4 = Screen(name='neljas')
    Screen5 = Screen(name="viies")
    kujund = StringProperty()

    def update(self, *args):
        pass
    def build(self):
        Clock.schedule_interval(self.update, 0.1)
        return kv

if __name__ == "__main__":
    autogeo().run()
千伏:

回溯:

 Traceback (most recent call last):
   File "C:\Users\ricsi\Anaconda3\lib\site-packages\kivy\lang\builder.py", line 249, in create_handler
     return eval(value, idmap), bound_list
   File "C:\Users\ricsi\PycharmProjects\ToolsforMaths\autogeo.kv", line 46, in <module>
     text: "Valisid kujundi " + app.kujund
   File "C:\Users\ricsi\Anaconda3\lib\site-packages\kivy\lang\parser.py", line 75, in __getattribute__
     object.__getattribute__(self, '_ensure_app')()
   File "C:\Users\ricsi\Anaconda3\lib\site-packages\kivy\lang\parser.py", line 70, in _ensure_app
     app.bind(on_stop=lambda instance:
 AttributeError: 'NoneType' object has no attribute 'bind'
回溯(最近一次呼叫最后一次):
文件“C:\Users\ricsi\Anaconda3\lib\site packages\kivy\lang\builder.py”,第249行,在create\U处理程序中
返回eval(值,idmap),绑定列表
文件“C:\Users\ricsi\PycharmProjects\ToolsforMaths\autogeo.kv”,第46行,中
文本:“Valisid kujundi”+app.kujund
文件“C:\Users\ricsi\Anaconda3\lib\site packages\kivy\lang\parser.py”,第75行,在\uu getattribute中__
对象。uuu getattribute_uuu(self,u sure_uapp')()
文件“C:\Users\ricsi\Anaconda3\lib\site packages\kivy\lang\parser.py”,第70行,在应用程序中
app.bind(on_stop=lambda实例:
AttributeError:“非类型”对象没有属性“绑定”

您正在加载一个在创建“app”之前使用“app”的.kv,因此没有人会抛出该错误。解决方案是在创建“app”之后解析它,例如构建方法

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
from kivy.clock import Clock


class autogeo(App):
    manager = ScreenManager()

    Screen1 = Screen(name="esimene")
    Screen2 = Screen(name="teine")
    Screen3 = Screen(name="kolmas")
    Screen4 = Screen(name="neljas")
    Screen5 = Screen(name="viies")
    kujund = StringProperty()

    def update(self, *args):
        pass

    def build(self):
        kv = Builder.load_file("autogeo.kv")
        Clock.schedule_interval(self.update, 0.1)
        return kv


if __name__ == "__main__":
    autogeo().run()
从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager,屏幕
从kivy.properties导入StringProperty
从kivy.clock导入时钟
类自动地理(应用程序):
manager=ScreenManager()
屏幕1=屏幕(name=“esimene”)
屏幕2=屏幕(name=“teine”)
Screen3=屏幕(name=“kolmas”)
屏幕4=屏幕(name=“neljas”)
屏幕5=屏幕(name=“viies”)
kujund=StringProperty()
def更新(自我,*参数):
通过
def生成(自):
kv=Builder.load_文件(“autogeo.kv”)
时钟计划间隔(自更新,0.1)
回流千伏
如果名称=“\uuuuu main\uuuuuuuu”:

autogeo().run()
您正在加载一个在创建“app”之前使用“app”的.kv,因此没有人会抛出该错误。解决方案是在创建“app”之后对其进行解析,例如构建方法

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
from kivy.clock import Clock


class autogeo(App):
    manager = ScreenManager()

    Screen1 = Screen(name="esimene")
    Screen2 = Screen(name="teine")
    Screen3 = Screen(name="kolmas")
    Screen4 = Screen(name="neljas")
    Screen5 = Screen(name="viies")
    kujund = StringProperty()

    def update(self, *args):
        pass

    def build(self):
        kv = Builder.load_file("autogeo.kv")
        Clock.schedule_interval(self.update, 0.1)
        return kv


if __name__ == "__main__":
    autogeo().run()
从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager,屏幕
从kivy.properties导入StringProperty
从kivy.clock导入时钟
类自动地理(应用程序):
manager=ScreenManager()
屏幕1=屏幕(name=“esimene”)
屏幕2=屏幕(name=“teine”)
Screen3=屏幕(name=“kolmas”)
屏幕4=屏幕(name=“neljas”)
屏幕5=屏幕(name=“viies”)
kujund=StringProperty()
def更新(自我,*参数):
通过
def生成(自):
kv=Builder.load_文件(“autogeo.kv”)
时钟计划间隔(自更新,0.1)
回流千伏
如果名称=“\uuuuu main\uuuuuuuu”:

autogeo().run()
由于'kv'文件的名称正确,因此可以完全取消对
Builder.load_file()的调用。
由于'kv'文件的名称正确,因此可以完全取消对
Builder.load_file()的调用。