[Tutor] Checking Entry Values in Tkinter Widgets

Alan Gauld alan.gauld at btinternet.com
Tue Mar 17 22:13:13 CET 2009

"Wayne Watson" <sierra_mtnview at sbcglobal.net> wrote

> The program I'm modifying uses something of a primitive way
> to check the validity of values entered into widgets on a larger 
> dialog.

You can bind events to the individual entry widgets to check values
when you navigate away from the widget. Or even on each keypress...

> ...Isn't this supposed to be done in the apply method for the 
> dialog?

I believe so. That is where you would check the data 
across all the widgets in the dialog. From your question it seems you
don't think the apply() is getting called?

> A typical data widget inside the  set operations dialog class is:
> class OperationalSettingsDialog(tkSimpleDialog.Dialog):
>    def __init__(self, parent, sdict):
>        self.sdict = sdict
>        tkSimpleDialog.Dialog.__init__(self, parent)
>    def body(self,master):
>        self.title("Operational Settings")
>             ...
>         # data widget
>        Label( master, text="Max Hourly Event Rate: ").grid(row=5, 
> sticky=W)
>        self.rateVar = StringVar()
>        Entry(master, width=10, 
> textvariable=self.rateVar).grid(row=5, column=1)
>        self.rateVar.set( "%s" % self.sdict["hourly_rate"] )
>             ...
>    def apply(self):
>        self.sdict["ok"] = True
>    #END of class
> Furthermore, doesn't the use of tkSimpleDialog.Dialog provide an OK
> and Cancel button, which upon use causes the the invocation of the
> apply method to depart?

Again I believe so but I'm no expert on SimpleDialog. I usually just 
my own dialogs based on Toplevel... Just habit.

Alan G
Author of the Learn to Program web site

More information about the Tutor mailing list