[Python-checkins] cpython: Issue #3033: Add displayof parameter to tkinter font.

andrew.svetlov python-checkins at python.org
Thu Apr 5 11:41:48 CEST 2012


http://hg.python.org/cpython/rev/774c2afa6665
changeset:   76115:774c2afa6665
user:        Andrew Svetlov <andrew.svetlov at gmail.com>
date:        Thu Apr 05 12:41:20 2012 +0300
summary:
  Issue #3033: Add displayof parameter to tkinter font.
Patch by Guilherme Polo.

files:
  Lib/tkinter/font.py |  44 ++++++++++++++++++++------------
  Misc/NEWS           |   2 +
  2 files changed, 29 insertions(+), 17 deletions(-)


diff --git a/Lib/tkinter/font.py b/Lib/tkinter/font.py
--- a/Lib/tkinter/font.py
+++ b/Lib/tkinter/font.py
@@ -2,9 +2,6 @@
 #
 # written by Fredrik Lundh, February 1998
 #
-# FIXME: should add 'displayof' option where relevant (actual, families,
-#        measure, and metrics)
-#
 
 __version__ = "0.9"
 
@@ -124,14 +121,17 @@
         "Return a distinct copy of the current font"
         return Font(self._root, **self.actual())
 
-    def actual(self, option=None):
+    def actual(self, option=None, displayof=None):
         "Return actual font attributes"
+        args = ()
+        if displayof:
+            args = ('-displayof', displayof)
         if option:
-            return self._call("font", "actual", self.name, "-"+option)
+            args = args + ('-' + option, )
+            return self._call("font", "actual", self.name, *args)
         else:
             return self._mkdict(
-                self._split(self._call("font", "actual", self.name))
-                )
+                self._split(self._call("font", "actual", self.name, *args)))
 
     def cget(self, option):
         "Get font attribute"
@@ -148,32 +148,42 @@
 
     configure = config
 
-    def measure(self, text):
+    def measure(self, text, displayof=None):
         "Return text width"
-        return int(self._call("font", "measure", self.name, text))
+        args = (text,)
+        if displayof:
+            args = ('-displayof', displayof, text)
+        return int(self._call("font", "measure", self.name, *args))
 
-    def metrics(self, *options):
+    def metrics(self, *options, **kw):
         """Return font metrics.
 
         For best performance, create a dummy widget
         using this font before calling this method."""
-
+        args = ()
+        displayof = kw.pop('displayof', None)
+        if displayof:
+            args = ('-displayof', displayof)
         if options:
+            args = args + self._get(options)
             return int(
-                self._call("font", "metrics", self.name, self._get(options)))
+                self._call("font", "metrics", self.name, *args))
         else:
-            res = self._split(self._call("font", "metrics", self.name))
+            res = self._split(self._call("font", "metrics", self.name, *args))
             options = {}
             for i in range(0, len(res), 2):
                 options[res[i][1:]] = int(res[i+1])
             return options
 
 
-def families(root=None):
+def families(root=None, displayof=None):
     "Get font families (as a tuple)"
     if not root:
         root = tkinter._default_root
-    return root.tk.splitlist(root.tk.call("font", "families"))
+    args = ()
+    if displayof:
+        args = ('-displayof', displayof)
+    return root.tk.splitlist(root.tk.call("font", "families", *args))
 
 
 def names(root=None):
@@ -205,10 +215,10 @@
 
     print(f.measure("hello"), f.metrics("linespace"))
 
-    print(f.metrics())
+    print(f.metrics(displayof=root))
 
     f = Font(font=("Courier", 20, "bold"))
-    print(f.measure("hello"), f.metrics("linespace"))
+    print(f.measure("hello"), f.metrics("linespace", displayof=root))
 
     w = tkinter.Label(root, text="Hello, world", font=f)
     w.pack()
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -19,6 +19,8 @@
 Library
 -------
 
+- Issue #3033: Add displayof parameter to tkinter font. Patch by Guilherme Polo.
+
 - Issue #14482: Raise a ValueError, not a NameError, when trying to create
   a multiprocessing Client or Listener with an AF_UNIX type address under
   Windows.  Patch by Popa Claudiu.

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


More information about the Python-checkins mailing list