[Python-Dev] proposed Tkinter change; any likelihood of acceptance?

Russell E. Owen rowen@cesmail.net
Tue, 24 Jun 2003 11:49:07 -0700


I'd like to introduce a small enhancement to Tkinter, but would like 
some idea of whether it has a chance of acceptance before proceeding too 
far (e.g. before checking in a patch).

The primary change is to add a "name" argument to the Variable.__init__, 
bringing it in line with other Tkinter classes. The justification is to 
allow users to create new Tkinter variables that point to existing tcl 
variables (e.g. somewhat similar to nametowidget). In some cases this 
may be more convenient than using setvar and getvar.

Subtlety:
- A new __eq__ method makes two Tkinter variables compare as equal if 
they are of the same type and have the same tcl name.

If it is not overreaching, I'd like to introduce a few related changes 
at the same time.

1) add a "value" argument to Variable.__init__. This would set the 
initial value of the new variable -- a feature I've long wanted.

Subtlety:
- If "name" is specified and the variable already exists, then "value" 
is ignored (so the existing value is preserved). One could always ignore 
"value" if the variable exists, but I suspect users would prefer to 
assume that newly created auto-named variables will be properly 
initialized to some default value.

2) add a new function "nametovariable" which returns a Tkinter variable 
given the name of a tcl variable.

Subtleties:
- To return a Tkinter variable of the correct class, this requires 
changing the auto naming scheme for Tkinter variables. I propose 
PY_class_num where class is the appropriate subclass of Variable. This 
is the only change that has any danger of affecting existing code.
- If the name does not meet the criteria, a StringVar is returned
- If the tcl variable does not exist, an exception is raised. This is 
not necesarry, but prevents accidentaly creating a new variable when one 
was trying to point to an existing one.

If this is too much of a change for 2.3b1 but might be considered for 
later releases, I'd like some idea if I should submit any of it now or 
wait or what.

-- Russell