2016-04-28 9 views
0

tkinterドロップダウンメニュー用のキーボードショートカットをいくつか作成しようとしています。たとえば、 'Ctrl + O'はファイルブラウザを開いて新しいファイルを開きます。tkinterキーバインドエラー

ファイル「C:\ Users \ユーザーケリー\のAppData \ローカル\プログラム\ Pythonの\ Python35-32 \ \ libに私はそれらを一緒に入れしようとすると正常、self.master.bind('<Control_L>', func)またはself.master.bind('<O>', func)しかし、私は取得する単一のキーをバインドするために取得することができます ファイル "C:¥Users¥kelly¥AppData¥Local¥Programs¥Python¥tkinter__init__.py"、行1099、バインド内 return self._bind(( 'bind'、self._w)、sequence、func、 。_bind self.tk.call(何+(シーケンス、CMD)) _tkinter.TclErrorでPython35-32 \ libに\ tkinter__init __ PY」、ライン1054、:

を結合する際に、詳細の後に余分な文字はこのコードが生成する私のエラー:

from tkinter import * 


class Application(): 

    def __init__(self, master=None): 
     '''Create a 'master' frame of 1 row x 1 column''' 
     self.master = master 
     button = Button(self.master, text = 'Button', command = self.test) 
     button.pack() 
     #This Binding works 
     self.master.bind('<Return>', self.test) 
     #this Binding produces Error 
     self.master.bind('<Control_L-o>', self.test) 


    def test(self, event = None): 
     print("Succesful Event") 

root = Tk() 
app = Application(master=root) 

答えて

1

これは単なる構文エラーです。変更されている単一のラインであなたのコード

self.master.bind('<Control_L><o>', self.test)にCTRL + Oをバインドする行を変更します。

class Application(): 

    def __init__(self, master=None): 
     '''Create a 'master' frame of 1 row x 1 column''' 
     self.master = master 
     button = Button(self.master, text = 'Button', command = self.test) 
     button.pack() 
     #This Binding works 
     self.master.bind('<Return>', self.test) 
     #this Binding produces Error 
     self.master.bind('<Control_L><o>', self.test) 


    def test(self, event = None): 
     print("Succesful Event") 

root = Tk() 
app = Application(master=root) 
+1

は、私が見つけることができる唯一の例は、それを私はそれを持っていた方法を持っていた、これは完璧に動作し、ありがとうございました。 – Kelly

+0

@Kelly Ok、odd。多分Python 2.xで動いたのかもしれません。私はチェックしていない。とにかく、歓迎です! – jDo

+1

@Kelly:イベントパターンの詳細な参照は、http://tcl.tk/man/tcl8.5/TkCmd/bind.htm#M5を参照してください。 –