Tkinterのaskdirectoryダイアログで新しいフォルダを作成する方法
Tkinterのaskdirectoryダイアログを使って新しいフォルダを作成するには、以下の手順に従います。
必要なモジュールをインポートします。askdirectoryメソッドにはfiledialogモジュールが、フォルダ作成にはosモジュールが必要です。
tkinterフレーム(ウィンドウ)のインスタンスを作成します。
win.geometryメソッドを使ってウィンドウのサイズを設定します。
ユーザー定義メソッド「create_subfolder」を定義します。このメソッド内でfiledialog.askdirectoryを呼び出してフォルダを選択し、そのパスを変数source_pathに保存します。
filedialogのaskdirectoryメソッドを使用すると、ディレクトリ選択ダイアログを開くことができます。選択されたディレクトリのパスは「path」変数に保存します。
次に、os.path.joinとmakedirsを組み合わせて、親ディレクトリの中にサブフォルダを作成します。
クリックするとcreate_subfolderメソッドを呼び出すボタンを作成します。
サンプルコード
# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
import os
# tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()
# ウィンドウのサイズを設定
win.geometry("700x350")
def create_subfolder():
# 親ディレクトリを選択するダイアログを表示
source_path = filedialog.askdirectory(title='Select the Parent Directory')
# 選択したディレクトリ内に「Images」フォルダのパスを生成
path = os.path.join(source_path, 'Images')
# サブフォルダを作成
os.makedirs(path)
button1 = ttk.Button(win, text="Select a Folder", command=create_subfolder)
button1.pack(pady=5)
win.mainloop()実行結果
上記のコードを実行すると、まず次のようなウィンドウが表示されます。

次に、「Select a Folder」ボタンをクリックして親フォルダを選択します。すると、選択した親フォルダの中に自動的に「Images」という名前のサブフォルダが作成されます。

補足ポイント
os.makedirsは、指定したパスにフォルダが存在しない場合に新規作成します。すでに同名のフォルダが存在する場合はエラーになるため、
exist_ok=Trueオプションを付けておくと安全です。ユーザーがダイアログでキャンセルした場合、source_pathには空文字列が返されるため、実行前に
if source_path:などの条件分岐を追加することをおすすめします。
-
Tkinterでスプラッシュ画面を作成する方法をわかりやすく解説
アプリケーションを起動した際に一瞬だけ表示される「スプラッシュ画面」。ロゴや読み込み中表示などを映し出すことで、アプリに洗練された印象を与えられます。Pythonの標準GUIライブラリであるTkinterを使えば、このスプラッシュ画面も簡単に実装できます。スプラッシュ画面作成の基本手順Tkinterでスプラッシュ画面を作成するには、以下の手順に従います。ラベルなどを配置したスプラッシュ画面を作成するoverrideredirectメソッドを使って、スプラッシュ画面を枠なし(ボーダーレス)にするスプラッシュ画面の直後に表示されるメインウィンドウを生成する関数を定義するafterメソッドを使って、
-
Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法
Bashスクリプトを作成してフォルダに保存すると、そのフォルダ内にいるときにしか実行できないことに気づくでしょう。一方で、lsやimagemagick、apache、squidなどは、それぞれ異なるディレクトリにインストールされていても、どこからでも実行できるのは不思議に思いませんか?その理由は、これらのコマンドのパスが「PATH」環境変数に登録されているからです。この変数にパスを追加すれば、自分の作ったスクリプトも同じようにどこからでも実行できるようになります。 Bashにパスを追加する 始める前に、Linuxのセキュリティの仕組み上、PATHは3つの異なるレベルで設定できることを説明