Python 属性错误:';按钮';对象没有属性

Python 属性错误:';按钮';对象没有属性,python,button,kivy,attributeerror,kivy-language,Python,Button,Kivy,Attributeerror,Kivy Language,在使用Filechooser选择目录后,我尝试将一个函数(in.py)绑定到按钮(in kv.),如下所示: .py: .kv(按钮块): 看起来像这样: 按下“.csv”后,我得到一个错误AttributeError:“Button”对象没有属性“output\u csv” 我知道上面描述过类似的问题,但是所有的例子都是用Python语言编写的,而我的问题似乎更多的是关于Kivy语言 如果有任何建议,我将不胜感激 完全错误回溯: File "C:\Users\gavrk\AppData\Lo

在使用Filechooser选择目录后,我尝试将一个函数(in.py)绑定到按钮(in kv.),如下所示:

.py:

.kv(按钮块):

看起来像这样:

按下“.csv”后,我得到一个错误
AttributeError:“Button”对象没有属性“output\u csv”
我知道上面描述过类似的问题,但是所有的例子都是用Python语言编写的,而我的问题似乎更多的是关于Kivy语言

如果有任何建议,我将不胜感激

完全错误回溯:

File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\runpy.py", line 193, in _run_module_as_main
  "__main__", mod_spec)
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\runpy.py", line 85, in _run_code
  exec(code, run_globals)
File "C:\GUI Projects\gercort\main.py", line 147, in <module>
  Gercort().run()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\app.py", line 855, in run
  runTouchApp()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 504, in runTouchApp
  EventLoop.window.mainloop()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\core\window\window_sdl2.py", line 747, in mainloop
  self._mainloop()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\core\window\window_sdl2.py", line 479, in _mainloop
  EventLoop.idle()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 342, in idle
  self.dispatch_input()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 327, in dispatch_input
  post_dispatch_input(*pop(0))
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 293, in post_dispatch_input
  wid.dispatch('on_touch_up', me)
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 707, in kivy._event.EventDispatcher.dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\uix\behaviors\button.py", line 179, in on_touch_up
  self.dispatch('on_release')
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 703, in kivy._event.EventDispatcher.dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 1214, in kivy._event.EventObservers.dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 1098, in kivy._event.EventObservers._dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\lang\builder.py", line 64, in custom_callback
  exec(__kvlang__.co_value, idmap)
File "C:\GUI Projects\gercort\gercort.kv", line 489, in <module>
  on_release: self.output_csv(self.filepath2)
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\weakproxy.cp37-win32.pyd", line 32, in kivy.weakproxy.WeakProxy.__getattr__

builtins.AttributeError: 'Button' object has no attribute 'output_csv'
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\runpy.py”,第193行,在主运行模块中
“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\runpy.py”,第85行,在运行代码中
exec(代码、运行\全局)
文件“C:\GUI Projects\gercort\main.py”,第147行,在
Gercort().run()
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\app.py”,第855行,正在运行
runTouchApp()
runTouchApp中第504行的文件“C:\Users\gavrk\AppData\Local\Programs\Python37-32\Lib\site packages\kivy\base.py”
EventLoop.window.mainloop()
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\core\window\window\u sdl2.py”,第747行,在mainloop中
self._mainloop()
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\core\window\window\u sdl2.py”,第479行,在mainloop中
EventLoop.idle()
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\base.py”,第342行,处于空闲状态
self.dispatch_input()
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\base.py”,第327行,在dispatch\u输入中
发送后输入(*pop(0))
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\base.py”,第293行,在post\u dispatch\u输入中
wid.dispatch('我在润色时)
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\\u event.cp37-win32.pyd”,第707行,kivy.\u event.EventDispatcher.dispatch
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\uix\behaviors\button.py”,第179行,在on\u touch\u中
自我分派(“发布时”)
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\\u event.cp37-win32.pyd”,第703行,kivy.\u event.EventDispatcher.dispatch
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\\u event.cp37-win32.pyd”,第1214行,在kivy.\u event.eventobsers.dispatch中
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\\u event.cp37-win32.pyd”,第1098行,kivy.\u event.eventobsers.\u
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\lang\builder.py”,第64行,在自定义回调中
exec(\uuuukVLANG\uuuuuuu.co\u值,idmap)
文件“C:\GUI Projects\gercort\gercort.kv”,第489行,在
发布时:self.output\u csv(self.filepath2)
文件“C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site packages\kivy\weakproxy.cp37-win32.pyd”,第32行,位于kivy.weakproxy.weakproxy.\uu getattr__
builtins.AttributeError:“Button”对象没有“output\u csv”属性
self意味着您正在从Button类调用函数,并且并没有名为output_csv的函数,所以错误告诉您这一点。您在SyllWindow类中定义了该函数。如果该按钮也在该屏幕上,只需将其更改为

on_release: root.output_csv(root.filepath)

请将完整的错误回溯添加到您的问题。@KlausD.Added full trackback to the descriptionies,按钮位于.kv的
@Gavrk哪里定义了filepath2变量?@Gavrk尝试使用root而不是self,我更改了答案,请再次检查。@Gavrk在SyllWindow类中使用self.filepath代替“filepath”名称。但不要更改kv文件。@Gavrk这是因为按钮,请添加到函数名*args,这样会像:def output\u csv(corpus\u root,*args)
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\runpy.py", line 193, in _run_module_as_main
  "__main__", mod_spec)
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\runpy.py", line 85, in _run_code
  exec(code, run_globals)
File "C:\GUI Projects\gercort\main.py", line 147, in <module>
  Gercort().run()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\app.py", line 855, in run
  runTouchApp()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 504, in runTouchApp
  EventLoop.window.mainloop()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\core\window\window_sdl2.py", line 747, in mainloop
  self._mainloop()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\core\window\window_sdl2.py", line 479, in _mainloop
  EventLoop.idle()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 342, in idle
  self.dispatch_input()
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 327, in dispatch_input
  post_dispatch_input(*pop(0))
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\base.py", line 293, in post_dispatch_input
  wid.dispatch('on_touch_up', me)
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 707, in kivy._event.EventDispatcher.dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\uix\behaviors\button.py", line 179, in on_touch_up
  self.dispatch('on_release')
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 703, in kivy._event.EventDispatcher.dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 1214, in kivy._event.EventObservers.dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\_event.cp37-win32.pyd", line 1098, in kivy._event.EventObservers._dispatch
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\lang\builder.py", line 64, in custom_callback
  exec(__kvlang__.co_value, idmap)
File "C:\GUI Projects\gercort\gercort.kv", line 489, in <module>
  on_release: self.output_csv(self.filepath2)
File "C:\Users\gavrk\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\kivy\weakproxy.cp37-win32.pyd", line 32, in kivy.weakproxy.WeakProxy.__getattr__

builtins.AttributeError: 'Button' object has no attribute 'output_csv'
on_release: self.output_csv(self.filepath2)
on_release: root.output_csv(root.filepath)