TKinter and focus events
Greg McFarlane
gregm at iname.com
Sun Jan 23 07:04:56 EST 2000
The beep is coming from the line:
self.EstWt.configure(validate='integer')
This is because, at this stage. the text is, for example "$1,234",
which is an invalid integer. What you need to do is move this line
until after you have called setentry.
On 23 Jan, Timothy Grant wrote:
> Hi,
>
> Thanks to some kind assistance from the list I have been able to make
> Tkinter do a pretty neat trick (at least I think so!)
>
> Using Pmw.EntryFields, When the field does not have focus it displays
> numbers formatted to a specification (e.g., $1,234.56). When the
> EntryField gets the focus it reformats the number stripping out the
> eye-candy (e.g., 1234.56). To make sure the user enters the correct
> info, I turn on either 'integer' or 'real' validation when the
> EntryField has focus, and turn it off before I set it to the prettified
> entry.
>
> It all work phenomenally well, and I'm tremendously pleased with how
> easy it was to convert a number in to nicely formatted text with commas.
> However, there is one minor annoyance, every time I move focus to the
> field I get what sounds like an error beep, everything works correctly,
> I just get this beep, I've been trying to track it down but haven't been
> able to figure it out yet. It appears to occur when I do the setentry()
> call with the unprettified number. Does anyone have any ideas what might
> be happening?
>
> def FmtEstWt(self, event):
> # Event type 9 is FocusIn and type 10 is FocusOut
> if event.type == '9': #FocusIn
> print 'EstWt FocusIn'
> self.EstWt.configure(validate='integer')
> self.tmp = string.replace(self.EstWt.get(),',', '')
> self.tmp = string.replace(self.tmp, '$', '')
> self.EstWt.setentry(self.tmp) #Beep appears to go off here.
> else: #FocusOut
> print 'EstWt FocusOut'
> self.EstWt.configure(validate=None)
>
> self.EstWt.setentry(commanumber(string.atoi(self.EstWt.get()),0,0))
>
> OK, I just thought of something just before I hit my send button, so I
> actually setup an "invalidcommand" option for the EntryField. Sure
> enough, the invalid function gets called when I do the setentry. This
> does not stop the setentry from working though. I've dumped the contents
> of self.tmp, and it appears to be a clean string that if I keyed by hand
> would pass the validation no problem.
>
> --
> Stand Fast,
> tjg.
>
> Chief Technology Officer tjg at exceptionalminds.com
> Red Hat Certified Engineer www.exceptionalminds.com
> Avalon Technology Group, Inc. (503) 246-3630
> >>>>>>>>>>>>Linux...Because rebooting isn't normal<<<<<<<<<<<<
>
> --
> http://www.python.org/mailman/listinfo/python-list
>
--
Greg McFarlane INMS Telstra Australia gregm at iname.com
More information about the Python-list
mailing list