2016-04-28 68 views
0

我想創建一個tkinter下拉菜單的幾個鍵盤快捷鍵,例如,'Ctrl + O'打開文件瀏覽器打開一個新文件。我可以得到一個鍵綁定成功地,self.master.bind('<Control_L>', func)self.master.bind('<O>', func)但是當我試圖把它們放在一起,我得到:tkinter鍵綁定錯誤

文件「C:\用戶\凱利\應用程序數據\本地\程序\ Python的\ Python35-32 \ LIB \ tkinter__init__.py「,第1099行,綁定 return self._bind(('bind',self._w),sequence,func,add) 文件」C:\ Users \ kelly \ AppData \ Local \ Programs \ Python \ 。Python35-32 \ LIB \ tkinter__init __ PY」,線1054,在_bind self.tk.call(什麼+(序列,CMD)) _tkinter.TclError:細節後多餘的字符在結合

此代碼生成我錯誤:

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

這只是一個語法錯誤。更改結合CTRL + O以self.master.bind('<Control_L><o>', self.test)

你與一行一行代碼更改:

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

@凱利好的,奇怪。也許它在Python 2.x或作者剛剛犯了一個錯字;我沒有檢查過。無論如何,不​​客氣! – jDo

+1

@Kelly:有關事件模式的明確參考,請參閱http://tcl.tk/man/tcl8.5/TkCmd/bind.htm#M5 –