Python フォルダ内のファイル名を取得する(スライド可能な一覧を作る)
はじめに
今回からGIF編集ソフトを作っていきたいと思います。
まずはファイル選択の部分を作ります。特定のフォルダからGIFファイルだけを抜き出し一覧にします。
プログラムのコード
# フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 0) from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Label from kivy.uix.button import Button import os import glob from kivy.core.text import LabelBase, DEFAULT_FONT from kivy.resources import resource_add_path resource_add_path('c:/Windows/Fonts') LabelBase.register(DEFAULT_FONT, 'msgothic.ttc') class CustomLayout(BoxLayout): pass class MainScreen(BoxLayout): def __init__(self, **kwargs): super().__init__(**kwargs) files = glob.glob('./data/*.gif') for file in files: self.ids.sv.add_widget(Button(text=os.path.basename(file), size_hint_y=None, height=150, color=(0,0,0,1), background_normal='')) # , background_color=(1,1,1,0.1))) class TestApp(App): def build(self): self.title = 'テスト' return MainScreen() if __name__ == '__main__': TestApp().run()
kvファイル(test.kv)
<MainScreen>: CustomLayout: orientation: "vertical" BoxLayout: orientation: "vertical" BoxLayout: Button: size_hint_x: 0.2 text: "1" Label: size_hint_x: 0.6 text: "today" color: 0, 0, 0, 1 Button: size_hint_x: 0.2 text: "2" ScrollView: size_hint_y: 10 BoxLayout: id: sv size_hint_y: None orientation: "vertical" height: self.minimum_height BoxLayout: Button: text: "3" Button: text: "4" Button: text: "5" <CustomLayout>: canvas.before: Color: rgba: 1, 1, 1, 1 Rectangle: pos: self.pos size: self.size
解説
glob.glob('./data/*.gif')
globモジュールを使います。「*.gif」でGIFファイルのみを取得できます。フォルダ内の該当ファイルはリストで返されます。
(ファイル一覧を取得だけなら osモジュールの「os.listdir()」でも出来そうです)
os.path.basename(file)
ファイル名だけを抜き出したい(パス名を省略したい)ときに使います。
self.ids.sv.add_widget()
kvファイルで空の「ScrollView」(id: sv)を作っておき、メインプログラムのほうで抜き出したファイル名のボタンを追加していきます。
background_normal=''
ボタンの色を白くするために使います。
(background_color=(1,1,1,1)だと灰色のままでした)
<CustomLayout>:
全体のバックの色を白色にしました。
まとめ
今まで基本の勉強してきたところが役に立っています。
はじめはファイル選択ダイアログを使う予定でしたが途中までやって考え直しました。今後のことを考えるとスマホで使う用にしたかったのと、サムネ的なものを付けてみたいと思いました。
次回は境界線を作ってサムネイルを表示できるようにしたいと思います。
保存ファイル
lesson77.py
test.kv
文責:Luke