1
ブラウズ機能を持つKivyアプリがあります。数字の名前でファイルをブラウズすると、それは奇妙な方法で表示されます。「最も重要なビット」スタイルで並べ替えます。スクリーンショットを追加する。 これを正しい順序で表示する方法を知っている人は誰ですか? (1,2,3 ...の代わりに、1,10,100 ...)PythonのKivy FileBrowserがファイルを適切にインデックス化しません。
おかげでたくさん!
ブラウズ機能を持つKivyアプリがあります。数字の名前でファイルをブラウズすると、それは奇妙な方法で表示されます。「最も重要なビット」スタイルで並べ替えます。スクリーンショットを追加する。 これを正しい順序で表示する方法を知っている人は誰ですか? (1,2,3 ...の代わりに、1,10,100 ...)PythonのKivy FileBrowserがファイルを適切にインデックス化しません。
おかげでたくさん!
自然な順序が必要です。これを行うには、クラスkivy.uix.filechooser.FileChooserController
のsort_func
プロパティを使用してファイルを注文する関数を置き換える必要があります。
例:
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
例としてのスクリーンショット: