Discussion:
[Tkinter-discuss] 回复: bind between event and callback
守株待兔
2011-08-17 09:06:28 UTC
Permalink
why in the following code,there is no "frame.focus_set()" in the code ,it can run ,why??
from Tkinter import *
root = Tk()
def callback(event):
print "i am here"

frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", callback)
frame.pack()
root.mainloop()


------------------ ???? ------------------
???: "Firat Ozgul"<ozgulfirat at gmail.com>;
????: 2011?8?17?(???) ??1:46
???: "????"<1248283536 at qq.com>;

??: Re: [Tkinter-discuss] bind between event and callback


The reason why you get no response is the lack of focus when you first
create the frame. Therefore you should set the focus on frame
manually, like this:

[code]
from Tkinter import *
root = Tk()
def callback(event):
print "i am here"

frame = Frame(root, width=100, height=100)
frame.bind("<Key>", callback)
frame.focus_set()
frame.pack()
root.mainloop()
[/code]
code1
from Tkinter import *
root = Tk()
print "i am here"
frame = Frame(root, width=100, height=100)
frame.bind("<Return>", callback)
frame.pack()
root.mainloop()
when i press "enter",there is no output "i am here"
code2
from Tkinter import *
root = Tk()
print "i am here"
frame = Frame(root, width=100, height=100)
frame.bind("<Key>", callback)
frame.pack()
root.mainloop()
when i press any key ,there is no output "i am here"
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss at python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tkinter-discuss/attachments/20110817/b8c2ac40/attachment.html>
Michael Lange
2011-08-17 09:26:39 UTC
Permalink
Hi,

Thus spoketh "????" <1248283536 at qq.com>
Post by 守株待兔
why in the following code,there is no "frame.focus_set()" in the
code ,it can run ,why?? from Tkinter import *
root = Tk()
print "i am here"
frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", callback)
frame.pack()
root.mainloop()
Mouse events are handled differently than key events.
When you click somewhere in the window of course the window manager
"knows" which widget is clicked - the one under the mouse pointer's "hot
spot". But when you press some key on your keyboard - how would the window
manager "know" which window and which of its child widgets "is meant"?
That is where the "keyboard focus" comes in. Keyboard events are always
sent (by the window manager) to the window that has focus, where
"window" does not only mean a main application window like your Tk()
instannce, but also "child windows" as your Tkinter.Frame() .

I hope this helps

Michael


.-.. .. ...- . .-.. --- -. --. .- -. -.. .--. .-. --- ... .--. . .-.

All your people must learn before you can reach for the stars.
-- Kirk, "The Gamesters of Triskelion", stardate 3259.2

Loading...