2013-11-04 6 views
0

저는 파일 시스템에서 파일을 읽어야하는 Python 앱용 Kivy를 GUI로 사용하려고합니다. 그러나 텍스트 필드의 텍스트에 대한 읽기 경로를 설정하는 동안 kivy 파일 선택기가 잘못된 경로를 읽거나 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가있는 팝업을 보여줍니다.

기본 오류는 올바른 경로를 읽지 못하기 때문에 filename [0]이 (가) IndexError를 throw한다는 점입니다. python2.7과 함께 Linux를 사용하고 있고 때로는 홈 폴더에서 파일을 선택할 때 filename 변수는 아무 것도 저장하지 않지만 path 변수는 misteriously/media,/opt 등의 임의의 폴더를 저장합니다.

누구든지이 문제를 해결 했습니까?

답변

1

내가 왜 잘못 처리되었는지 알아 냈습니다. 모든 실패는리스트를 통해 폴더와 파일을 클릭 할 수 있습니다 Kivy의

FileChooserListView

에 의해 발생하지만, 또한 가능한에서 교수형 찾는 '>'기호를 할 수있다 디렉토리 인 모든 list 요소의 시작 부분. 이러한 '>'기호를 사용하면 잘못된 경로가 표시된다는 것을 깨달았지만 항상 디렉토리의 목록 요소를 클릭하면 모든 것이 올바르게 작동합니다. '>' 그러나, 약간은 (지금은) 비활성화 할 수 없습니다, 그래서 가장 좋고 빠른 대체 솔루션 대신 FileChooserIconView

을 사용하고 있습니다! 이제 모든 것이 좋습니다 :)