2017-11-28 2 views
1

브라우저 기능이있는 Kivy 앱이 있습니다. 숫자 이름을 가진 파일을 탐색 할 때 이상한 방식으로 파일을 표시합니다. "가장 중요한 비트"스타일로 정렬합니다. 스크린 샷 추가 중. 올바른 순서로 표시하기 위해 문제를 해결하는 방법을 알고있는 사람이 있습니까? (1,2,3 ... 대신 1,10,100의 ...)Python의 Kivy FileBrowser가 파일을 올바르게 색인하지 않습니다.

Bad image indexing...

감사합니다 많이!

답변

1

자연 주문이 필요합니다. 이렇게하려면 kivy.uix.filechooser.FileChooserController 클래스의 sort_func 속성을 사용하여 파일을 주문하는 함수를 대체해야합니다.

Natural Sorting algorithm 그의 대답 @Darius 베이컨 나타낸 알고리즘에 기초

예 :

main.py :

import re 
from kivy.app import App 
from kivy.properties import ObjectProperty 




def natural_key(path): 
    return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', path)] 


def natural_sort(files, filesystem):  
    return (sorted((f for f in files if filesystem.is_dir(f)), key = natural_key) + 
      sorted((f for f in files if not filesystem.is_dir(f)))) 


class RootWidget(FloatLayout): 
    sort_func = ObjectProperty(natural_sort) 



class MainApp(App): 
    def build(self): 
     return RootWidget() 

if __name__ == '__main__': 
    MainApp().run() 

main.kv :

<RootWidget>: 
    TabbedPanel: 
     do_default_tab: False 

     TabbedPanelItem: 
      text: 'List View' 
      BoxLayout: 
       orientation: 'vertical' 
       FileChooserListView: 
        sort_func: root.sort_func 


     TabbedPanelItem: 
      text: 'Icon View' 
      BoxLayout: 
       orientation: 'vertical' 
       FileChooserIconView: 
        sort_func: root.sort_func 

일부 스크린 샷의 예로는

,210

enter image description here

enter image description here

관련 문제