2013-11-04 35 views
0

我試圖使用Kivy作爲我的python應用程序的GUI,它需要從文件系統讀取文件。 但是,在某些情況下,當我嘗試爲文本字段的文本設置讀取路徑時,kivy filechooser讀取錯誤的路徑或導致IndexError失效。 我使用默認例如讀取文件從http://kivy.org/docs/api-kivy.uix.filechooser.html 我的應用程序的相關部分在此功能,在異常處理添加爲不是一個好方法來處理這個教訓:)python kivy filechooser讀取錯誤路徑

def load(self, path, filename): 
    ''' 
    this will load the file and dismiss the dialog 
    ''' 
    print "Loading file..." 

    print "filename:",filename 
    print "path:",path 
    try: 
     self.selected_file = filename[0] 
     self.file_text_input.text = self.selected_file 
     self.dismiss_popup() 
    except IndexError as ie: 
     print "Something made a boo-boo...try again"+str(ie) 
     self.dismiss_popup() 
     self.show_popup("ERROR","Somehow I couldn't load the file:\nCheck the permissions or move it to other place") 

自我。 show_popup()只是一個輔助函數,它顯示了一個帶有set函數params的彈出窗口。

基本錯誤是文件名[0]會拋出一個IndexError,因爲它沒有讀取正確的路徑。 我在python2.7中使用Linux,當我在我的home文件夾中選擇一個文件時,文件名變量什麼都不存儲,而path變量存儲一個隨機文件夾,例如/ media,/ opt等等。

有沒有人遇到過這個問題?

回答

1

我發現它爲什麼處理不正確。 所有的故障是因Kivy的

FileChooserListView

,使點擊通過列表文件夾和文件造成的,但它也能夠有一個LITTEL「>」符號在每個列表元素的開始,這是目錄。 我意識到,當我使用這些'>'符號,然後我得到錯誤的路徑,但如果我總是點擊目錄的列表元素,那麼一切工作正常。 然而,那個小 '>' 不能被禁用(現在),所以最好和最快的替代解決方案是使用

FileChooserIconView

,而不是!現在一切都很好:)