前提・実現したいこと
フォルダダイアログからフォルダを選択して,そのフォルダ内のファイルリストをTkinterのListBoxに代入したいだけです.
Tkinterで簡単なGUIアプリを作ろうと勉強中ですが,上記の簡単なこともできず困っております.
発生している問題・エラーメッセージ
現在のソースコードですと,下記のようになっております.
本来の狙いでは,最初の初期化の際に代入した「あああ」などは消えて,フォルダ内のファイルが縦方向に並んで一覧に表示させたいと考えています.
現在の問題は,以下の二点です.
- フォルダ選択のたびに,リストボックス内の要素をすべて消し,選択フォルダ内のファイルのみにする方法がわからない.
- 取得したファイルリストを代入すると,縦方向に並ばず,すべてまとめて一つの文字列としてリストボックスに表示される理由がわからない.
解決方法をご存知の方いましたら,ぜひご協力お願いいたします.
該当のソースコード
Python
1# -*- coding: utf-8 -*- 2import tkinter as tk 3from tkinter import filedialog 4import glob 5 6# global変数 7file_List = ['あああ','いいい','ううう'] 8folderpath = '' 9 10# fileOPen 11def fileButton_click(): 12 # フォルダパスの取得 13 dir = '__file__' 14 folderpath = tk.filedialog.askdirectory(initialdir = dir,title='Please select a directory') 15 16 # フォルダ内のファイルリストの取得 17 file_List = glob.glob(folderpath+'/*') 18 19 # ファイルリストをリストボックスに格納 20 fileListBox.insert(tk.END,file_List) 21 22 23if __name__ == '__main__': 24 # windowを作成 25 win = tk.Tk() 26 win.title('Data Viewer') 27 win.geometry('800x600') 28 29 # レイアウトの作成 30 label = tk.Label(win,text='名前は?') 31 label.pack() 32 33 # テキストボックスを作成 34 text = tk.Entry(win) 35 text.pack() 36 text.insert(tk.END, 'クジラ') # INitialize 37 38 # ファイルリストの表示 39 txt = tk.StringVar(value=file_List) 40 fileListBox = tk.Listbox(win,listvariable=txt,width=30,height=20) 41 fileListBox.pack() 42 #スクロールバー 43 scrollbar = tk.Scrollbar(win,orient='v',command=fileListBox.yview) 44 45 # フォルダ内のファイルリストを作成 46 fileButton = tk.Button(win,text='folder Open',command=fileButton_click) 47 fileButton.pack() 48 49 # windowを動かす 50 win.mainloop() 51 print('the end of program.')
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/06 00:24