2016-04-28 67 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 –