前提
Windowsを使っている初心者です。Pythonで実行したいと考えています。
returnや関数の理解がまだできていないのかと思います。
実現したいこと
GUIで実装を考えています。内容は下記の通りです。
① フォルダを選択
② 該当フォルダの中にあるpngファイルをリスト化
③ そのリストを「rename.csv」に書き込んで開く
「フォルダ選択」ボタンで①を、「リストを作成」ボタンで②、③を実行したいです。
グローバル変数はあまり使いたくないです。
発生している問題・エラーメッセージ
「リスト作成」list_create()にdef select_folder()で選んだフォルダのパス(folder_path)を渡す方法が知りたいです。
今回はこの処理だけですが、ファイル移動等他の処理にもこのパスを使うことを想定しています。
TypeError: list_create() missing 1 required positional argument: 'folder_path'
該当のソースコード
Python
1################################################################### 2#フォルダ選択 3################################################################### 4 5# フォルダ選択ダイアログ表示 6def select_folder(): 7 folder_path = filedialog.askdirectory() 8 return folder_path 9 10 11################################################################### 12#リスト作成 13################################################################### 14 15def list_create(folder_path): 16 path = folder_path + '/*.png' 17 filelist = glob.glob(path, recursive=True) 18 filelist = [os.path.splitext(os.path.basename(f))[0] for f in filelist] 19 20 # リスト内の重複を削除 21 filelist = (list(set(filelist))) 22 23 filelist.sort() 24 filelist.insert(0, '変更前ファイル名') 25 filelist2 = np.array(filelist).reshape(-1, 1).tolist() 26 27 # rename.csvにデータを書き込み 28 with open('rename.csv', 'w' , newline='') as f: 29 writer = csv.writer(f) 30 writer.writerows(filelist2) 31 32 # rename.csvを開く 33 os.startfile('rename.csv') 34 35# 画面作成 36window = tkinter.Tk() 37window.geometry('250x150') 38window.title('ファイルリスト作成') 39 40# ボタン作成[リンク内容](url) 41button0 = tk.Button(window, text='フォルダ選択', command=select_folder) 42button1 = tk.Button(window, text='リストを作成', command=list_create) 43 44# ボタン表示 45button0.place(x=10, y=10) 46button1.place(x=10, y=50) 47 48button1.bind("<Button-1>",list_create) 49 50# 画面表示 51window.mainloop() 52
試したこと
list_create関数の中でselect_folder関数を再実行してそれを folder_pathに繋いだのですが、当然ですが「リスト作成」ボタンで再度フォルダ選択画面が出てしまいます。
def list_create(): folder_path = select_folder() path = folder_path + '/*.png'

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/26 10:20