を使用してメニューバーを構築する Tkinter では、コマンドのホットキー バインディングを作成する引数に<menu_item>.add_command()
文字列が必要です。accelerator
ユーザーのプラットフォームが Mac かそれ以外かをチェックするメソッドを作成し、そうであればCommand
他のキーと組み合わせたキー文字列を返します。
しかし、それは機能しません->メニュー項目をクリックするとメニューが構築されていますが、ホットキーでは機能しません。見えるけど⌘</kbd> + N in the menu..
私の最初の考えは、self.hot_key()
引数として渡されたときにメソッドが呼び出されないということです..
import sys
import Tkinter
class app(object):
def __init__(self):
self.gui = Tkinter.Tk()
self.gui.minsize(width=640, height=320)
menu = Tkinter.Menu(self.gui)
filemenu = Tkinter.Menu(menu, tearoff=0)
filemenu.add_command(
label = 'New',
command = self.New,
accelerator = self.hot_key('n')
)
menu.add_cascade(
label = 'File',
menu = filemenu
)
self.gui.config(menu=menu)
self.text = Tkinter.Text(self.gui)
self.text.pack(expand=Tkinter.YES, fill=Tkinter.BOTH)
def hot_key(self, *keys):
super_key = 'Command' if sys.platform == 'darwin' else 'Control'
return '{super}+{keys}'.format(super=super_key, keys='+'.join(keys))
def New(self):
print "I'm working!"
App = app()
App.gui.mainloop()