Tkinter チュートリアル - メニューバー Menubar
GUI の最も一般的な要素の 1つは、メニューバーです。メニューバーは通常、タイトルバーの下にあり、一連のメニューを表示します。トップレベルのメニューのいずれかをクリックすると、サブメニューが拡張して、関連メニューの要素を表示します。サブメニューは、通常、open、close、save または quit などの特定のコマンドにバインドされています。
Tkinter の基本メニューバー
基本的な Tkinter メニューバーを作成します。この例では、ほとんどのエディターにファイルメニューがあります。簡単にするために Open、Save と Quit サブメニューのみを含めます。
import tkinter as tk
app = tk.Tk()
app.geometry("300x200")
app.title("Basic Menu Bar")
menubar = tk.Menu(app)
filemenu = tk.Menu(menubar)
filemenu.add_command(label="Open")
filemenu.add_command(label="Save")
filemenu.add_command(label="Exit")
menubar.add_cascade(label="File", menu=filemenu)
app.config(menu=menubar)
app.mainloop()

menubar = tk.Menu(app)
Menu の指定されたパラメーターは、作成されたメニューの親ウィジェットです。上記のコード行は、メニューウィジェット menubar が app フレームの最上位になることを意味します。
filemenu = tk.Menu(menubar)
同様に、filemenu は menubar ウィジェットのメニュー、または app フレームのサブメニューです。
filemenu.add_command(label="Open")
add_command コマンドをメニューfilemenu に追加します。label はサブメニューに表示されるテキストです。
menubar.add_cascade(label="File", menu=filemenu)
コマンド addcade を使って filemenu を menuar に追加します。File は、app フレームの最上位に表示されるメニューラベルです。
app.config(menu=menubar)
menubar は app のサブパーツとして作成されましたが、app の menu になるように配置する必要があります。GUI にはメニューバーは表示されません。それ以外の場合、メニューバーは GUI に表示されません。
ファイルのサブメニューをクリックしたら、まったく応答しません。まだコマンドが付加されていませんので。次のセクションでは、命令の追加方法を紹介します。
Tkinter メニューバーコマンド
import tkinter as tk
from tkinter import filedialog
def onOpen():
print(
filedialog.askopenfilename(
initialdir="/",
title="Open file",
filetypes=(("Python files", "*.py;*.pyw"), ("All files", "*.*")),
)
)
def onSave():
print(
filedialog.asksaveasfilename(
initialdir="/",
title="Save as",
filetypes=(("Python files", "*.py;*.pyw"), ("All files", "*.*")),
)
)
app = tk.Tk()
app.geometry("300x200")
app.title("Menu Bar Command")
menubar = tk.Menu(app)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=onOpen)
filemenu.add_command(label="Save", command=onSave)
filemenu.add_command(label="Exit", command=app.quit)
menubar.add_cascade(label="File", menu=filemenu)
app.config(menu=menubar)
app.mainloop()
filemenu = tk.Menu(menubar, tearoff=0)
tearoff はデフォルトの値を 1 に設定されており、上部の点線をクリックすると、メインウィンドウからメニューが切り離されてフローティングメニューが作成されます。ここで 0 を設定すると、このフロート機能を無効にします。
filemenu.add_command(label="Open", command=onOpen)
onOpen 関数はメニューOpen にバインドされており、Open がクリックされると呼び出されます。
def onOpen():
print(
filedialog.askopenfilename(
initialdir="/",
title="Open file",
filetypes=(("Python files", "*.py;*.pyw"), ("All files", "*.*")),
)
)
この関数は、開いているダイアログを表示し、選択したファイル名を返します。この例では実際にファイルを開くのではなく、ファイル名を出力しています。
tkfiledialog は 3つの機能があります。
| 関数 | パラメーター | 説明 |
|---|---|---|
.askopenfilename |
Directory, Title, Extension | ファイルを開くには:既存のファイルの選択を要求するダイアログ。 |
.asksaveasfilename |
Directory, Title, Extension | ファイルを保存するには:ファイルの作成または置換を要求するダイアログ。 |
.askdirectory |
なし | ディレクトリを開くには |
filemenu.add_command(label="Exit", command=app.quit)
Tkinter には、GUI を終了する内部関数 quit があります。この関数を簡単に Exit に結びつけて、他の exit 関数を作成しなくてもいいです。
