[Python-checkins] CVS: python/dist/src/Lib/lib-tk Tkinter.py,1.134,1.135
Barry A. Warsaw
bwarsaw@cnri.reston.va.us
2000年2月25日 16:54:21 -0500 (EST)
Update of /projects/cvsroot/python/dist/src/Lib/lib-tk
In directory anthem:/home/bwarsaw/projects/python/Lib/lib-tk
Modified Files:
Tkinter.py
Log Message:
Changes inspired by Randall Hooper to allow callbacks when an
OptionMenu is modified. Somewhat rewritten and elaborated by myself.
class _setit: The constructor now takes an optional argument
`callback' and stashes this in a private variable. If set, the
__call__() method will invoke this callback after the variable's value
has changed. It will pass the callback the value, followed by any
args passed to __call__().
class OptionMenu: The constructor now takes keyword arguments, the
only one that's legally recognized is `command', which can be set to a
callback. This callback is invoked when the OptionMenu value is set.
Any other keyword argument throws a TclError.
Index: Tkinter.py
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Lib/lib-tk/Tkinter.py,v
retrieving revision 1.134
retrieving revision 1.135
diff -C2 -r1.134 -r1.135
*** Tkinter.py 1999年10月20日 12:29:56 1.134
--- Tkinter.py 2000年02月25日 21:54:19 1.135
***************
*** 1,5 ****
# Tkinter.py -- Tk/Tcl widget wrappers
! __version__ = "$Revision: 1.134 $"
import sys
--- 1,5 ----
# Tkinter.py -- Tk/Tcl widget wrappers
! __version__ = "$Revision: 1.135 $"
import sys
***************
*** 1791,1802 ****
class _setit:
! def __init__(self, var, value):
self.__value = value
self.__var = var
def __call__(self, *args):
self.__var.set(self.__value)
class OptionMenu(Menubutton):
! def __init__(self, master, variable, value, *values):
kw = {"borderwidth": 2, "textvariable": variable,
"indicatoron": 1, "relief": RAISED, "anchor": "c",
--- 1791,1805 ----
class _setit:
! def __init__(self, var, value, callback=None):
self.__value = value
self.__var = var
+ self.__callback = callback
def __call__(self, *args):
self.__var.set(self.__value)
+ if self.__callback:
+ apply(self.__callback, (self.__value,)+args)
class OptionMenu(Menubutton):
! def __init__(self, master, variable, value, *values, **kwargs):
kw = {"borderwidth": 2, "textvariable": variable,
"indicatoron": 1, "relief": RAISED, "anchor": "c",
***************
*** 1806,1812 ****
menu = self.__menu = Menu(self, name="menu", tearoff=0)
self.menuname = menu._w
! menu.add_command(label=value, command=_setit(variable, value))
for v in values:
! menu.add_command(label=v, command=_setit(variable, v))
self["menu"] = menu
--- 1809,1823 ----
menu = self.__menu = Menu(self, name="menu", tearoff=0)
self.menuname = menu._w
! # 'command' is the only supported keyword
! callback = kwargs.get('command')
! if kwargs.has_key('command')
! del kwargs['command']
! if kwargs:
! raise TclError, 'unknown option -'+kwargs.keys()[0]
! menu.add_command(label=value,
! command=_setit(variable, value, callback))
for v in values:
! menu.add_command(label=v,
! command=_setit(variable, v, callback))
self["menu"] = menu