<p>尝试绑定到主变量:</p>
<pre><code>from Tkinter import *
main = Tk()
def leftKey(event):
print "Left key pressed"
def rightKey(event):
print "Right key pressed"
frame = Frame(main, width=100, height=100)
main.bind('<Left>', leftKey)
main.bind('<Right>', rightKey)
frame.pack()
main.mainloop()
</code></pre>
<p>我应该解释这一点,因为Tk知道绑定,因为主窗口有键盘焦点。正如@BryanOakley的回答所解释的,您也可以将键盘焦点设置到另一帧:</p>
<pre><code>from Tkinter import *
main = Tk()
def leftKey(event):
print "Left key pressed"
def rightKey(event):
print "Right key pressed"
frame = Frame(main, width=100, height=100)
frame.bind('<Left>', leftKey)
frame.bind('<Right>', rightKey)
frame.focus_set()
frame.pack()
main.mainloop()
</code></pre>
<p>有关<a href="http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm" rel="noreferrer">events and bindings at effbot</a>的详细信息。</p>
<p>此外,您还可以重新编写该应用程序,使其成为<code>Tkinter.Frame</code>的子类,如下所示:</p>
<pre><code>import Tkinter
class Application(Tkinter.Frame):
def __init__(self, master):
Tkinter.Frame.__init__(self, master)
self.master.minsize(width=100, height=100)
self.master.config()
self.master.bind('<Left>', self.left_key)
self.master.bind('<Right>', self.right_key)
self.main_frame = Tkinter.Frame()
self.main_frame.pack(fill='both', expand=True)
self.pack()
@staticmethod
def left_key(event):
print event + " key pressed"
@staticmethod
def right_key(event):
print event + " key pressed"
root = Tkinter.Tk()
app = Application(root)
app.mainloop()
</code></pre>