本記事では、下図のようなGUIアプリをPythonの標準ライブラリ「tkinter」で作成する雛形コードを載せました。
下図のようにファイルを選択したり、選択したファイルパスや、その内容を表示したりします。
■本プログラム
import os import tkinter as tk import tkinter.filedialog as fd import pandas as pd from pycaret.regression import * import datetime now = datetime.datetime.now() now = now.strftime("%y%m%d") class App(tk.Frame): def __init__(self, master = None): tk.Frame.__init__(self, master) self.pack() self.create_widgets() #root.title("回帰分析GUIアプリ") # アプリの名前 #root.geometry("500×500") # アプリの画面サイズ def create_widgets(self): # ラベル self.lbl1 = tk.Label(self, text = '回帰モデル') self.lbl1.grid(row = 0, column = 0) self.lbl2 = tk.Label(self, text = '解析したいデータ') self.lbl2.grid(row = 1, column = 0) # ファイル選択ボタン self.btn1 = tk.Button(self, text = 'ファイル選択', command = self.btn_open_file1) self.btn1.grid(row = 0, column = 2) self.btn2 = tk.Button(self, text = 'ファイル選択', command = self.btn_open_file2) self.btn2.grid(row = 1, column = 2) # エントリー(パスの表示する場所) self.ent1 = tk.Entry(self, width = 70) self.ent1.grid(row = 0, column = 1) self.ent2 = tk.Entry(self, width = 70) self.ent2.grid(row = 1, column = 1) # テキストエリア(読み込んだデータを表示する場所) self.text1 = tk.Text(self) self.text1.grid(row = 3, column = 0, columnspan = 8) self.text2 = tk.Text(self) self.text2.grid(row = 6, column = 0, columnspan = 8) # 実行ボタン self.btnf = tk.Button(self, text = '実行', command = self.analysis) self.btnf.grid(row = 10, column = 2) # フォルダ検索メソッド def btn_open_folder(self): self.ent1.delete(0, tk.END) self.ent1.insert(0, fd.askdirectory()) # ファイル選択メソッド def btn_open_file1(self): self.ent1.delete(0, tk.END) filetype1 = [('オブジェクトファイル', '*.pkl'), ('すべて', '*')] file_path1 = fd.askopenfilename(initialdir = os.path.expanduser('~/Desktop'), filetypes = filetype1) # エントリーエリアに表示 self.ent1.insert(0, file_path1) self.load_reg_model = load_model(file_path1[:-4]) # テキストエリアに表示 self.text1.insert('end', self.load_reg_model) def btn_open_file2(self): self.ent2.delete(0, tk.END) filetype2 = [('カンマ', '*.csv'), ('エクセル', '*.xlsx'), ('すべて', '*')] file_path2 = fd.askopenfilename(initialdir = os.path.expanduser('~/Desktop'), filetypes = filetype2) # エントリーエリアに表示 self.ent2.insert(0, file_path2) self.df = pd.read_csv(file_path2) # テキストエリアに表示 self.text2.insert('end', self.df) # # 検索ボタンメソッド # def search(self): # if self.ent1.get() == '' or self.ent2.get() == '': # self.text.insert('1.0', 'フォルダと拡張子と検索語を入力してください') # return # self.text.delete('1.0', 'end') # kts = self.ent2.get() # for dirpath, dirnames, filenames in os.walk(self.ent1.get()): # for name in filenames: # if kts in name: # target = self.ent3.get() # filename = os.path.join(dirpath, name) # self.text.insert('end', '-----' + filename + '-----\n') # f = open(filename, errors = 'ignore') # for num, line in enumerate(f): # if target in line: # insert_line = str(num) + ':' + line # self.text.insert('end', insert_line) # f.close() # 実行ボタンメソッド def analysis(self): if self.ent1.get() == '' or self.ent2.get() == '': self.text.insert('1.0', 'フォルダと拡張子と検索語を入力してください') return predict_df = predict_model(self.load_reg_model, data = self.df) # 予測結果をファイルに保存する predict_df.to_csv(now + '_predict.csv', index=False, encoding='utf-8') app = App() app.mainloop()
以上
<広告>
リンク
リンク