キーボードショートカット付きのTkinterドロップダウンメニューの作成方法
ドロップダウンメニューとは、アプリケーション上部のメニューバーに表示される、縦方向に積み重ねられたメニュー項目のリストのことです。Tkinterアプリケーションでは、Menu()クラスのオブジェクトを作成することで、すべてのメニュー項目を格納したメニューバーを簡単に構築できます。
マウス操作だけでなく、キーボードショートカットを使ってメニューを選択し、基本操作を実行したいケースはよくあります。すべてのメニューに対してキーをバインドするには、bind_all(<Key>, callback)メソッドを使用します。このメソッドはアプリケーション全体(すべてのウィジェット)に対してイベントバインディングを適用するため、どこにフォーカスがあってもショートカットキーが有効になります。
実装例
以下の例では、アプリケーションウィンドウに「File」メニューと複数のメニュー項目を持つメニューバーを作成しています。「Ctrl + Q」のキーの組み合わせを押すと、メインウィンドウが閉じられるように設定します。
#必要なライブラリをインポート
from tkinter import *
#Tkinterフレームのインスタンスを作成
win = Tk()
#ウィンドウサイズを設定
win.geometry("750x350")
def exit():
win.destroy()
#メニューバーを作成
menubar = Menu()
filemenu = Menu(menubar, tearoff=False)
menubar.add_cascade(label="File", underline=0, menu=filemenu)
filemenu.add_command(label="1.a", underline=1)
filemenu.add_command(label="2.b", underline=1)
filemenu.add_command(label="3.c", underline=1)
filemenu.add_command(label="Quit", underline=1, command=exit, accelerator="Ctrl+Q")
win.config(menu=menubar)
filemenu.bind_all("<Control-q>", exit)
win.mainloop()コードのポイント
- tearoff=False:メニューを切り離して独立したウィンドウとして表示する機能を無効にします。
- underline:メニューラベル内でアクセスキーとして扱う文字の位置(インデックス)を指定します。
- accelerator:メニュー項目の右側にショートカットキー名(例:「Ctrl+Q」)を表示するためのオプションです。表示のみを担当するため、実際の動作にはbind_all()によるキーバインドが必要です。
実行結果
上記のコードを実行すると、メニューバーに「File」メニューを含むウィンドウが表示されます。

その後、メニュー項目「Quit」をクリックするか、キーボードで「Ctrl + Q」を押すことで、メインウィンドウを閉じることができます。
-
Macでスクリーンショットを撮る方法!覚えておきたいキーボードショートカット完全ガイド
WindowsからMacに乗り換えたばかりの方は、Macでのスクリーンショットの撮り方に戸惑うかもしれません。確かに、MacのキーボードにはPrint Screenキーがありません。しかし、代わりに使えるキーボードショートカットがいくつも用意されています。正しいショートカットを使えば、画面全体、単一のウィンドウ、あるいは画面の一部だけを自由にキャプチャできます。 macOS Mojave以降にアップグレードしている場合は、「スクリーンショット」アプリを使って画面のさまざまな部分をキャプチャしたり、画面の動画録画まで行えます。このアプリは「アプリケーション」フォルダ内の「ユーティリティ」セクシ
-
【保存版】Gmailのキーボードショートカット活用術|メール業務の時間を大幅に短縮する方法
実はGmailには、多くのユーザーが活用しきれていない便利な機能が数多く隠れています。メール作成時に太字や斜体といった基本的な文字装飾すら使ったことがない方も少なくありません。その理由はどこにあるのでしょうか? ビジネスメールはフォーマルさが求められ、問い合わせへの返信、指示、タスクの依頼などに使われるため、プライベートなやり取りよりも職場で中心的なコミュニケーション手段となります。「素早く対応する」と言っても、上司からのメールへの返信や部下への指示送信を、実際にどれほど迅速に行えていますか?認めようと認めまいと、わかりやすく情報量のあるメールを作成するには時間がかかるものです。誤字脱字や重