[Python-checkins] cpython (merge 3.3 -> default): Fixed grid_columnconfigure() and grid_rowconfigure() methods of

serhiy.storchaka python-checkins at python.org
Wed Feb 19 17:35:49 CET 2014


http://hg.python.org/cpython/rev/b6df5f8f86d3
changeset:   89273:b6df5f8f86d3
parent:      89270:186f6f56f4bc
parent:      89272:6227b0ecb5fb
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Wed Feb 19 18:35:10 2014 +0200
summary:
  Fixed grid_columnconfigure() and grid_rowconfigure() methods of
Tkinter widgets to work in wantobjects=True mode.

files:
  Lib/tkinter/__init__.py |  29 ++++++++++++++++++-----------
  Misc/NEWS               |   3 +++
  2 files changed, 21 insertions(+), 11 deletions(-)


diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py
--- a/Lib/tkinter/__init__.py
+++ b/Lib/tkinter/__init__.py
@@ -1339,6 +1339,21 @@
             args = args + (col2, row2)
         return self._getints(self.tk.call(*args)) or None
     bbox = grid_bbox
+
+    def _gridconvvalue(self, value):
+        if isinstance(value, (str, _tkinter.Tcl_Obj)):
+            try:
+                svalue = str(value)
+                if not svalue:
+                    return None
+                elif '.' in svalue:
+                    return getdouble(svalue)
+                else:
+                    return getint(svalue)
+            except ValueError:
+                pass
+        return value
+
     def _grid_configure(self, command, index, cnf, kw):
         """Internal function."""
         if isinstance(cnf, str) and not kw:
@@ -1357,22 +1372,14 @@
             for i in range(0, len(words), 2):
                 key = words[i][1:]
                 value = words[i+1]
-                if not value:
-                    value = None
-                elif '.' in str(value):
-                    value = getdouble(value)
-                else:
-                    value = getint(value)
-                dict[key] = value
+                dict[key] = self._gridconvvalue(value)
             return dict
         res = self.tk.call(
                   ('grid', command, self._w, index)
                   + options)
         if len(options) == 1:
-            if not res: return None
-            # In Tk 7.5, -width can be a float
-            if '.' in res: return getdouble(res)
-            return getint(res)
+            return self._gridconvvalue(res)
+
     def grid_columnconfigure(self, index, cnf={}, **kw):
         """Configure column INDEX of a grid.
 
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -28,6 +28,9 @@
 Library
 -------
 
+- Issue #20635: Fixed grid_columnconfigure() and grid_rowconfigure() methods of
+  Tkinter widgets to work in wantobjects=True mode.
+
 - Issue #19612: On Windows, subprocess.Popen.communicate() now ignores
   OSError(22, 'Invalid argument') when writing input data into stdin, whereas
   the process already exited.

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list