本サイトは広告・プロモーションが含まれています
Python

【デスクトップアプリ】Tkiniter を使えばファイル選択やフォルダ選択ができる【Python】

この記事はこんな人におすすめ

・デスクトップアプリを作ってみたい方
・Pythonを使いって業務効率化アプリを作ってみたい方
など

どうも、こんにちは。コンです。
2023年になっても、相変わらず工場で便利ツールを頼まれる度に量産している日々を送ってます。
皆様はいかがお過ごしでしょうか??

今回は私が普段使っているファイル・フォルダ選択のプログラムについて解説していきたいと思います。

ファイルを開く時


ファイルを開く時には、tkinter.filedialogモジュールのaskopenfilename()関数を使います。

以下が私がよく使うコード

import tkinter as tk
from tkinter import filedialog
import os

home = os.getcwd()

root = tk.Tk()
root.withdraw()
filename = filedialog.askopenfilename(
    title = "ファイルを開く",
    initialdir = home #開くディレクトリを指定
    )
#今回はプリントだけ
print(filename)

askopenfilename()関数を使う前にroot=などをしているのは
Tkinterはルートウィンドウを持たなければならず、ルートウィンドウがない場合、勝手に作成するため
見栄えのために書いております。
(他にウィンドウを勝手に出ないようにする方法があれば教えてください)

オプション

上の段落でも少し書いてしまいましたが、
最初に開くフォルダであったり、選択するファイルの種類を制限するためのオプションも用意されています。

parent ダイアログをその上に表示するウィンドウ
titleウィンドウのタイトル
initialdir最初に表示するディレクトリ
initialfileダイアログを表示した際に選択するファイル
filetypes(ラベル, パターン) のタプルからなるシーケンスで、’*’ ワイルドカードが利用できます
defaultextensionファイルに追加するデフォルトの拡張子 (保存ダイアログ向け)
multiple真の場合、複数要素の選択を許可します

なので例えば、複数の画像ファイル(png,jpeg)だけを選択する場合は、以下のようなコードを書きます。


imagefiles=filedialog.askopenfilename(
    title = "複数の画像を選択",
    initialdir = home, #開くディレクトリを指定
    filetypes = {("Image file", ".png .jpg"), ("PNG", ".png"), ("JPEG", ".jpg")}, # pngとjpegを指定
    multiple =True
    )
#今回はプリントだけ
print(imagefiles)

フォルダを開くとき

フォルダを開く時には、Tkinter.filedialogモジュールのaskdirectory()関数を使います。
基本的にはファイルを開くときのaskopenfilename()関数と同じ

以下が私がよく使うコード

import tkinter as tk
from tkinter import filedialog
import os

home = os.getcwd()

root = tk.Tk()
root.withdraw()
foldername = filedialog.askdirectory(
    title = "ファイルを開く",
    initialdir = home) 

print(foldername)

使いどき


私が上記のようなコードを書く時は、色々な人に使ってもらいたいデスクトップアプリを書いた時です。

例えばPDFファイル編集や画像の編集プログラムを書いても
編集ファイルやフォルダの指定方法が面倒だと、使われないことが多いので
このコードを書くようになりました。

昔はinput関数を使っていたのですが
コマンドプロンプトよりも、ウィンドウ(ダイアログ?)がでる方が職場の皆様の安心感があるそうで
今ではこちらを多く使うようになりました。

おわりに


ここまで読んでくださり、ありがとうございます。

このブログを読んでくださっている方は
おそらくweb系ではなく、製造だったり事務系な方が多いと思いますので
そんな方にこの記事が読んでいただければ幸いです。

最近読んだ本だと「Pythonではじめるデスクトップアプリ開発入門」が
業務効率化を目指すPython初学者にとって、親切に書かれていたのでおすすめになります。

ここまで読んでいただいてありがとうございました。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA