summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2002-10-10 14:36:13 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2002-10-10 14:36:13 (GMT)
commit6ce1315bd35b6114abf8a59d0e9b9f7dce0bcd7d (patch)
treeb9dd2f0939a92fe546f463a1deba145d48db2c55
parentdbe3f76270d8bc22f1201e6ac1d63dbe3124dc3f (diff)
downloadcpython-6ce1315bd35b6114abf8a59d0e9b9f7dce0bcd7d.zip
cpython-6ce1315bd35b6114abf8a59d0e9b9f7dce0bcd7d.tar.gz
cpython-6ce1315bd35b6114abf8a59d0e9b9f7dce0bcd7d.tar.bz2
Patch #612602: Streamline configure methods.
-rw-r--r--Lib/lib-tk/Tkinter.py103
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS4
3 files changed, 29 insertions, 79 deletions
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index 573d71d..f2c9a91 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -1067,15 +1067,8 @@ class Misc:
exc, val, tb = sys.exc_type, sys.exc_value, sys.exc_traceback
root = self._root()
root.report_callback_exception(exc, val, tb)
- # These used to be defined in Widget:
- def configure(self, cnf=None, **kw):
- """Configure resources of a widget.
-
- The values for resources are specified as keyword
- arguments. To get an overview about
- the allowed keyword arguments call the method keys.
- """
- # XXX ought to generalize this so tag_config etc. can use it
+ def _configure(self, cmd, cnf, kw):
+ """Internal function."""
if kw:
cnf = _cnfmerge((cnf, kw))
elif cnf:
@@ -1083,15 +1076,23 @@ class Misc:
if cnf is None:
cnf = {}
for x in self.tk.split(
- self.tk.call(self._w, 'configure')):
+ self.tk.call(_flatten((self._w, cmd)))):
cnf[x[0][1:]] = (x[0][1:],) + x[1:]
return cnf
if type(cnf) is StringType:
- x = self.tk.split(self.tk.call(
- self._w, 'configure', '-'+cnf))
+ x = self.tk.split(
+ self.tk.call(_flatten((self._w, cmd, '-'+cnf))))
return (x[0][1:],) + x[1:]
- self.tk.call((self._w, 'configure')
- + self._options(cnf))
+ self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
+ # These used to be defined in Widget:
+ def configure(self, cnf=None, **kw):
+ """Configure resources of a widget.
+
+ The values for resources are specified as keyword
+ arguments. To get an overview about
+ the allowed keyword arguments call the method keys.
+ """
+ return self._configure('configure', cnf, kw)
config = configure
def cget(self, key):
"""Return the resource value for a KEY given as string."""
@@ -2043,19 +2044,7 @@ class Canvas(Widget):
arguments. To get an overview about
the allowed keyword arguments call the method without arguments.
"""
- if cnf is None and not kw:
- cnf = {}
- for x in self.tk.split(
- self.tk.call(self._w,
- 'itemconfigure', tagOrId)):
- cnf[x[0][1:]] = (x[0][1:],) + x[1:]
- return cnf
- if type(cnf) == StringType and not kw:
- x = self.tk.split(self.tk.call(
- self._w, 'itemconfigure', tagOrId, '-'+cnf))
- return (x[0][1:],) + x[1:]
- self.tk.call((self._w, 'itemconfigure', tagOrId) +
- self._options(cnf, kw))
+ return self._configure(('itemconfigure', tagOrId), cnf, kw)
itemconfig = itemconfigure
# lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift,
# so the preferred name for them is tag_lower, tag_raise
@@ -2383,18 +2372,7 @@ class Listbox(Widget):
call the method without arguments.
Valid resource names: background, bg, foreground, fg,
selectbackground, selectforeground."""
- if cnf is None and not kw:
- cnf = {}
- for x in self.tk.split(
- self.tk.call(self._w, 'itemconfigure', index)):
- cnf[x[0][1:]] = (x[0][1:],) + x[1:]
- return cnf
- if type(cnf) == StringType and not kw:
- x = self.tk.split(self.tk.call(
- self._w, 'itemconfigure', index, '-'+cnf))
- return (x[0][1:],) + x[1:]
- self.tk.call((self._w, 'itemconfigure', index) +
- self._options(cnf, kw))
+ return self._configure(('itemconfigure', index), cnf, kw)
itemconfig = itemconfigure
class Menu(Widget):
@@ -2481,18 +2459,7 @@ class Menu(Widget):
return self.tk.call(self._w, 'entrycget', index, '-' + option)
def entryconfigure(self, index, cnf=None, **kw):
"""Configure a menu item at INDEX."""
- if cnf is None and not kw:
- cnf = {}
- for x in self.tk.split(self.tk.call(
- (self._w, 'entryconfigure', index))):
- cnf[x[0][1:]] = (x[0][1:],) + x[1:]
- return cnf
- if type(cnf) == StringType and not kw:
- x = self.tk.split(self.tk.call(
- (self._w, 'entryconfigure', index, '-'+cnf)))
- return (x[0][1:],) + x[1:]
- self.tk.call((self._w, 'entryconfigure', index)
- + self._options(cnf, kw))
+ return self._configure(('entryconfigure', index), cnf, kw)
entryconfig = entryconfigure
def index(self, index):
"""Return the index of a menu item identified by INDEX."""
@@ -2719,18 +2686,9 @@ class Text(Widget):
if option[-1:] == "_":
option = option[:-1]
return self.tk.call(self._w, "image", "cget", index, option)
- def image_configure(self, index, cnf={}, **kw):
+ def image_configure(self, index, cnf=None, **kw):
"""Configure an embedded image at INDEX."""
- if not cnf and not kw:
- cnf = {}
- for x in self.tk.split(
- self.tk.call(
- self._w, "image", "configure", index)):
- cnf[x[0][1:]] = (x[0][1:],) + x[1:]
- return cnf
- apply(self.tk.call,
- (self._w, "image", "configure", index)
- + self._options(cnf, kw))
+ return self._configure(('image', 'configure', index), cnf, kw)
def image_create(self, index, cnf={}, **kw):
"""Create an embedded image at INDEX."""
return apply(self.tk.call,
@@ -2821,15 +2779,9 @@ class Text(Widget):
if option[-1:] == '_':
option = option[:-1]
return self.tk.call(self._w, 'tag', 'cget', tagName, option)
- def tag_configure(self, tagName, cnf={}, **kw):
+ def tag_configure(self, tagName, cnf=None, **kw):
"""Configure a tag TAGNAME."""
- if type(cnf) == StringType:
- x = self.tk.split(self.tk.call(
- self._w, 'tag', 'configure', tagName, '-'+cnf))
- return (x[0][1:],) + x[1:]
- self.tk.call(
- (self._w, 'tag', 'configure', tagName)
- + self._options(cnf, kw))
+ return self._configure(('tag', 'configure', tagName), cnf, kw)
tag_config = tag_configure
def tag_delete(self, *tagNames):
"""Delete all tags in TAGNAMES."""
@@ -2874,16 +2826,9 @@ class Text(Widget):
if option[-1:] == '_':
option = option[:-1]
return self.tk.call(self._w, 'window', 'cget', index, option)
- def window_configure(self, index, cnf={}, **kw):
+ def window_configure(self, index, cnf=None, **kw):
"""Configure an embedded window at INDEX."""
- if type(cnf) == StringType:
- x = self.tk.split(self.tk.call(
- self._w, 'window', 'configure',
- index, '-'+cnf))
- return (x[0][1:],) + x[1:]
- self.tk.call(
- (self._w, 'window', 'configure', index)
- + self._options(cnf, kw))
+ return self._configure(('window', 'configure', index), cnf, kw)
window_config = window_configure
def window_create(self, index, cnf={}, **kw):
"""Create a window at INDEX."""
diff --git a/Misc/ACKS b/Misc/ACKS
index cffe25d..5c0d241 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -414,6 +414,7 @@ Edward K. Ream
Marc Recht
John Redford
Terry Reedy
+Steve Reeves
Ofir Reichenberg
Sean Reifschneider
Michael P. Reilly
diff --git a/Misc/NEWS b/Misc/NEWS
index 7321f60..849bd88 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -354,6 +354,10 @@ Extension modules
Library
-------
+- Various configure methods of Tkinter have been stream-lined, so
+ that tag_configure, image_configure, window_configure now return
+ a dictionary when invoked with no argument.
+
- Importing the readline module now no longer has the side effect of
calling setlocale(LC_CTYPE, ""). The initial "C" locale, or
whatever locale is explicitly set by the user, is preserved. If you