簡體   English   中英

AttributeError: 'Button' 對象沒有屬性

[英]AttributeError: 'Button' object has no attribute

在使用 Filechooser(全部在一個屏幕上)選擇目錄后,我嘗試將一個函數(在 .py 中)綁定到按鈕(在 kv. 中),如下所示:

.py:

class SyllWindow(Screen): #screen where all happens

    def select(self, *args):

        if args[1]:

            filepath = args[1][0]

            try: self.label.text = filepath

            except: pass

    def output_csv(corpus_root): #function

        corpus = PlaintextCorpusReader(corpus_root, '.*') #this must be irrelevant actually
        def reduce_dip(corpus_string):
            corpus_string = corpus_string.replace("Ei", "ö")
            corpus_string = corpus_string.replace("ei", "ö")
            # reduced
            corpus_string = corpus_string.replace("ie", "ö")
            return corpus_string
        vowels = [' ','a','e','i','o','u','ä','ö','ü','A','E','I','O','U','Ä','Ö','Ü']
        cfd_syll = nltk.ConditionalFreqDist(
            (textname, num_syll)
            for textname in corpus.fileids()
            for num_syll in [len(w) for w in ''.join(char for char in reduce_dip(corpus.raw(fileids=textname)) if char in vowels).split()])
        syll_dataframe = DataFrame(cfd_syll)
        return syll_dataframe.to_csv(path + '\silben.csv')            

    pass

.kv(按鈕塊):

Button:

                            text: '.csv'
                            font_size: 14
                            on_release: self.output_csv(self.filepath)

看起來像這樣:

在此處輸入圖片說明

按“.csv”后,我收到錯誤AttributeError: 'Button' object has no attribute 'output_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'
on_release: self.output_csv(self.filepath2)

self 意味着您正在從 Button 類調用函數,並且沒有名為 output_csv 的函數,因此錯誤會告訴您這一點。 您在 SyllWindow 類中定義了該函數。 如果該按鈕也在該屏幕上,只需將其更改為

on_release: root.output_csv(root.filepath)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM