前回はサブウインドウについて解説していきました。今回はメインウインドウについて解説していきます。テキストエディタアプリに関する投稿は今回が最後になります。
メインウインドウ
仕様としては、まずメニューバーのFileタブを押下すると、Open...とSave as...とExitが表示されます。そのうちのOpen...を押下すると任意のテキストファイルを読み込み、下部のテキストエディタに表示させることができます。
また、Save as...を押下すると任意のディレクトリ内にエディタで作成した定型文を保存することができます。Exitはアプリを終了させます。では、プログラムを掲載します。
Open...押下時に動く関数open_func
# Open...
def open_func():
# 開くテキストファイルのパス
typ = [("Text","*.txt"),("All Files","*.*")]
txt_path = tk.filedialog.askopenfilename(filetypes = typ)
# ファイルが選択された場合データ書き込み
if len(txt_path) != 0:
# テキストボックスのデータ消去
txtbox.delete("1.0","end")
# テキストボックスへ書込み
with open(txt_path,"r") as file:
txtbox.insert("1.end",file.read())
Save_as...押下時に動く関数save_func
# Save...
def save_func():
# 保存するテキストファイルのパス
typ = [("Text","*.txt")]
txt_path = tk.filedialog.asksaveasfilename(filetypes = typ,
defaultextension = "txt")
# ファイルが選択された場合データを保存
if len(txt_path,) != 0:
# ファイルへ書込み
with open(txt_path, "w") as file:
# テキストボックスの値を取得
data = txtbox.get("1.0","end")
file.write(data)
メインウインドウGUI
### GUI ###
# ウインドウの作成
root = tk.Tk()
# フレーム
frame = ttk.Frame(root,padding = 5)
frame.pack(padx = 5,pady = 5)
# テキストボックス
txtbox = tk.Text(frame,width = 60,height = 20)
# スクロールバー作成
yscroll = tk.Scrollbar(frame,orient = tk.VERTICAL,
command = txtbox.yview)
yscroll.pack(side = tk.RIGHT,fill = tk.Y)
txtbox["yscrollcommand"] = yscroll.set
//縦型のスクロールバーを右側に配置し、縦方向に移動するコマンドを記述
# テキストボックスの配置
txtbox.pack()
# メニューバーの作成
menubar = tk.Menu(root)
root.configure(menu = menubar)
# Fileメニュー
filemenu = tk.Menu(menubar,tearoff = 0)
menubar.add_cascade(label = "File",menu = filemenu)
# Fileメニューの内容
filemenu.add_command(label = "Open...",command = open_func)
filemenu.add_command(label = "Save as...",command = save_func)
filemenu.add_separator()
filemenu.add_command(label = "Exit",
command = lambda:root.destroy())
//それぞれのメニューに関数を組み込み仕様通りに動くよう記述
# Helpメニュー
helpmenu = tk.Menu(menubar,tearoff = 0)
menubar.add_cascade(label = "Help",menu = helpmenu)
# >Manual
helpmenu.add_command(label = "Manual")
//メニューのみでマニュアル的なものは作成しておりません。
# 定型文ボタン
fp_button = tk.Button(root, text = "Fixed Phrase",
command = sub_window)
fp_button.pack(padx = 10,pady = 10,ipady = 5,fill = tk.X)
//サブウインドウを開く関数を組み込み、テキストエディタの下部に配置
# ウインドウ状態の維持
root.mainloop()
これで今回のプログラムは終了となります。このテキストエディタはメールの文面などを作成する際にすごく重宝いたしますので、もし、便利と思っていただいた方は自分なりにアレンジを加えて、作成してみるとよいかと思います。例えば誰か別の人に作成してあげる場合はマニュアルの部分も記述して作ってあげるとより親切かと思います。以上です。そのうちまた別の技術を投稿したいと思います。
エンジニアファーストの会社 株式会社CRE-CO H_M