実現したいこと
tkinterでボタンなどを指定した場所に配置したい
前提
tkinterでファイルの読み込み、データを処理するGUIを作製しようと考えています。
pack(side = tk.LEFT)などで指定しても、中央付近にしかボタンなどを配置できなくて困っています。
該当のソースコード
python
1import tkinter as tk 2from tkinter import filedialog 3import pandas as pd 4import glob 5import os 6from tkinter import messagebox 7 8class Application(tk.Frame): 9 def __init__(self, master=None): 10 super().__init__(master) 11 self.master = master 12 self.master.geometry("400x300") 13 self.master.title("解析ソフト") # 追加する行 14 self.pack() 15 self.create_widgets() 16 17 18 def create_widgets(self): 19 # フォルダを指定するためのボタンを作成 20 self.folder_button = tk.Button(self) 21 self.folder_button["text"] = "読み込むフォルダを選択" 22 self.folder_button["command"] = self.select_folder 23 self.folder_button.pack() 24 25 # 保存先を指定するためのボタンを作成 26 self.save_button = tk.Button(self) 27 self.save_button["text"] = "保存先を選択" 28 self.save_button["command"] = self.select_save_folder 29 self.save_button.pack() 30 31 # 保存するファイル名を入力するためのテキストボックスを作成 32 self.file_name_label = tk.Label(self, text="保存するファイル名:") 33 self.file_name_label.pack() 34 self.file_name_entry = tk.Entry(self) 35 self.file_name_entry.pack() 36 37 # 平均回数を入力するためのテキストボックスを作成 38 self.average_label = tk.Label(self, text="平均回数:") 39 self.average_label.pack() 40 self.average_entry = tk.Entry(self) 41 self.average_entry.pack() 42 43 # 実行ボタンを作成 44 self.execute_button = tk.Button(self) 45 self.execute_button["text"] = "ファイル読み込み" 46 self.execute_button["command"] = self.execute 47 self.execute_button.pack() 48 49 def select_folder(self): 50 # ファイル選択ダイアログを表示して、フォルダを選択する 51 self.folder_path = filedialog.askdirectory() 52 print("フォルダが選択されました:", self.folder_path) 53 54 def select_save_folder(self): 55 # ファイル選択ダイアログを表示して、保存先を選択する 56 self.save_folder_path = filedialog.askdirectory() 57 print("保存先が選択されました:", self.save_folder_path) 58 59 def execute(self): 60 # 平均回数を取得する 61 try: 62 ave = int(self.average_entry.get()) 63 except ValueError: 64 print("平均回数には半角数字を入力してください") 65 return 66 67 # フォルダが選択されていることを確認する 68 if not hasattr(self, 'folder_path'): 69 print("フォルダを選択してください") 70 return 71 72 # ファイル名が入力されていることを確認する 73 file_name = self.file_name_entry.get() 74 if file_name == "": 75 print("ファイル名を入力してください") 76 return 77 78 # CSVファイルを 79 all_files = glob.glob(self.folder_path + "/*.csv") 80 if len(all_files) == 0: 81 print("フォルダにCSVファイルがありません") 82 return 83 84#処理部分は関係ないので省いています 85 86if __name__ == '__main__': 87 root = tk.Tk() 88 app = Application(master=root) 89 app.mainloop()
試したこと
widgetの配置について、下記のページなどを参照し、packでの配置(expand = True, fill = tk.X)などを試したのですが、幅が一番テキストの長い「folder_button」になっており、
大きさをself.master.geometry("400x300")で設定してもほぼ余白になってしまいます。
https://imagingsolution.net/program/python/tkinter/widget_layout_pack/
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー