実現したいこと
Tkinterにて、ファイルダイアログから一括選択した複数のファイルをファイル名でリストに1行ずつ追加していく
環境
OS:Windows 10
Python Version:3.11.1
コード
Filename_list.py
import tkinter as tk #tkinterのことをtkと略して書きたい場合に記述。
import os #OS機能を使用するライブラリ。今回はファイル名の取得を行うために使用。
from tkinter import * #tkinterモジュール内で定義されているメソッドや変数をまとめてインポート
from tkinter import filedialog #tkinter内のfiledialogを使用するために記述。
#ウィンドウの作成
window = Tk() #メインウィンドウ"window"を作成
window.title("PDF") #"window"のタイトルを定義
window.geometry("850x650") #ウィンドウサイズを定義
window.resizable(width=False, height=False) #ウィンドウサイズを固定。
#開くボタンイベント
def open_click():
#ファイルダイアログを開く(今回は.pdfファイルのみを選択できるようにする)
filename = filedialog.askopenfilenames(filetypes=[('','*.pdf')])
add_list=list(filename)
for x in add_list:
#ファイル名を取得してリストに1行ずつ追加する
listbox.insert(END,os.path.basename(x)) #絶対パスを取得したい場合は単にxのみ記述。
#リスト選択イベント
def listbox_selected(self):
select = listbox.curselection() #現在選択している項目を取得
selected_module = listbox.get(select)
print(selected_module) #コマンドプロンプトに選択している項目を表示
#オブジェクトの定義
#"開く"ボタンを作成し、イベント"open_click"と紐づける
open = tk.Button(window,text="開く",width=5,height=3,command=open_click)
#リストボックスを作成し、イベント"listbox_selected"と紐づける
listbox = tk.Listbox(window,width=60,height=35)
listbox.bind('<<ListboxSelect>>',listbox_selected)
#オブジェクトの配置
open.pack(anchor=tk.NW) #N:北/S:南/E:東/W:西
listbox.pack(anchor=tk.NW)
#ウィンドウの表示
window.mainloop()