On 1 September 2012 11:30, Peter Otten <__pete...@web.de> wrote: > Arnaud Delobelle wrote: >> It would be good if I could intercept the key press event and cancel its >> action on the Entry widget. It's easy to intercept the key event, but I >> haven't found out how to prevent the funny characters from being inserted >> into the Entry widget input area. > > Untested as I have no Mac: > > import Tkinter as tk > > def suppress(event): > if event.keycode in {111, 116}: > print "ignoring", event.keycode > return "break" > print event.keycode, "accepted" > > root = tk.Tk() > entry = tk.Entry(root) > entry.bind("<Key>", suppress) > entry.pack() > > root.mainloop()
This works fine! return "break" is the piece of knowledge that I was missing. Thanks a lot! In fact I lied a bit in my original message - I do use the UP and DOWN arrows on one Entry widget for navigating its command history. To do this I was binding the "<Up>" and "<Down>" events to a function, which simply has to return "break" to work around the bug. On other Entry widgets, I just bind "<Up>" and "<Down>" to a suppress function which simply returns "break". >> I've struggled to find good tkinter >> docs on the web. > > For my (basic) needs I keep coming back to > > http://infohost.nmt.edu/tcc/help/pubs/tkinter/ Thanks for the link. I was using the docs on effbot which are nice but probably incomplete (and old). I guess I should flag up this bug but I don't even know if it's a Python or Tk problem and have little time or expertise to investigate. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list