田中太郎
今回は、メモ帳にメニューバーを追加します。
前回
前回はメモ帳に保存機能を搭載しました。
今回は、メニューバーを作成しましょう。
完成イメージ
メモ帳にメニューバーを追加します。
コード
notepad.py
import tkinter as tk
import notepad_func
root = tk.Tk()
# メニューバーを作成する
notepad_func.create_menubar(root)
# テキストボックスを作成する
text_widget = tk.Text(root, wrap=tk.CHAR)
text_widget.grid(column=0, row=0, sticky=(tk.N, tk.S, tk.E, tk.W))
# テキストボックスの大きさを可変にする
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
# ctrl-sでファイルを保存
root.bind('<Control-KeyPress-s>', notepad_func.save_file_as)
# タイトルとかを設定
root.title("Notepad")
root.geometry("500x250")
root.mainloop()
notepad_func.py
import tkinter as tk
import tkinter.filedialog
def save_file_as(event=None):
"""名前を付けて保存する"""
f_type = [('Text', '*.txt')]
file_path = tkinter.filedialog.asksaveasfilename(
filetypes=f_type)
if file_path != "":
with open(file_path, "w") as f:
f.write(text_widget.get("1.0", "end-1c"))
return
def create_menubar(root):
"""メニューバーを作成する"""
menubar = tk.Menu(root)
# ファイル
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="新規(N)")
filemenu.add_command(label="開く(O)...")
filemenu.add_command(label="上書き保存(S)")
filemenu.add_command(label="名前を付けて保存(A)...", command=save_file_as)
filemenu.add_separator()
filemenu.add_command(label="終了(X)", command=root.destroy)
menubar.add_cascade(label="ファイル(F)", menu=filemenu)
# ヘルプ
helpmenu = tk.Menu(menubar, tearoff=0)
helpmenu.add_command(label="About...")
menubar.add_cascade(label="ヘルプ(H)", menu=helpmenu)
root.config(menu=menubar)
解説
create_menubar
メニューバーを作成します。
menubar = tk.Menu(root)
メニューバーのオブジェクトを作成します。
filemenu.add_command(label=”名前を付けて保存(A)…”, command=save_file_as)
メニューバーの内容を作成します。”名前を付けて保存(A)”をクリックするとcommand=save_file_asで指定した関数が起動します。
今回はファイル保存ダイアログが開きます。
filemenu.add_separator()
は上記の図の”名前を付けて保存(A)”と”終了(X)”の間の線を作っています。
まとめ
今回はメモ帳にメニューバーを追加しました。編集して、独自の機能を入れてみて下さい。
コメント
mizukatu
今回でネットへの投稿が2回目、やっとできるところまでになりました。
ラズパイ4でPythonとLazarus、OpenSCAD等が理解不足のまま少し実用になりつつ。
そんな中で私の使っているエディタを使いこなしていません。
今回(もう一年前に投稿されていますね!)拝見して。。これだーーと
第3回まで拝見しています。もし追加されているようなら、便乗を。。と
万年初心者なので機能追加は不可能と思いますが挑戦してみます。
機能として[Cut,Copy,Paste][Cut+Paste][一括変換][検索][ツール実行]
[漢字対応]が出来れば良いかな。。と
ただし、私にはまだ、そこまで対応できていないと感じています。
何時にになるかは。。。。
でも、これまでの記事から少しでも進めるものと考えています
ほとんどがシロート状態の個人勉強です。失礼がありましたらご勘弁を。
これからも利用させてください。
コメントありがとうございます!
最近はPythonを触ってないので。。
お力にになれるかはわかりませんが、助けになれば幸いです。
mizukatu
田中さん、ご連絡が可能なんですね。感激!!
私がやっと、たどり着いた。。と感じています。
今でこそ、Lazarus上からpythonを通して種々のコマンドが使えています。
ラズパイのパネルに登録が有ると「利用が便利」になりました。
本当は[Thonny][mu][Spyder][Geany]の[python-Tool]を使いこなしたいのですが。。
実際の利用法が理解できていません。
でも、いろんなツールが紹介されていますので、もっと悩んでみます。
今月初めから[MegEdit]として[Lazarus]で挑戦しては、いますが。。。?
本来はWindows/XPなんです。それ以上には他のマシンの関係で???
今回でネットへの投稿が3回目、やっとできるところまでになりました。
ラズパイ4の64bit対応でここまで、辿り着きました。
MariaDBの使い方をLazarusにセットしたんですが使い方を忘れています。
一つやってると前のものを忘れてしまう年齢ですから。。ね
お互い頑張りましょう!