From: Serhiy Storchaka Date: Fri, 26 May 2017 05:15:51 +0000 (+0300) Subject: [2.7] bpo-30310: tkFont now supports unicode options (e.g. font family). (#1567) X-Git-Tag: v2.7.14rc1~127 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=96f502059717a692ca3abd968b26c5ea2918ad3a;p=python [2.7] bpo-30310: tkFont now supports unicode options (e.g. font family). (#1567) --- diff --git a/Lib/lib-tk/test/test_tkinter/test_font.py b/Lib/lib-tk/test/test_tkinter/test_font.py index 4cbf82e8d8..830c5a691a 100644 --- a/Lib/lib-tk/test/test_tkinter/test_font.py +++ b/Lib/lib-tk/test/test_tkinter/test_font.py @@ -1,7 +1,7 @@ import unittest import Tkinter as tkinter import tkFont as font -from test.test_support import requires, run_unittest +from test.test_support import requires, run_unittest, gc_collect from test_ttk.support import AbstractTkTest requires('gui') @@ -35,6 +35,16 @@ class FontTest(AbstractTkTest, unittest.TestCase): self.assertIsInstance(self.font.cget(key), sizetype) self.assertIsInstance(self.font[key], sizetype) + def test_unicode_family(self): + family = u'MS \u30b4\u30b7\u30c3\u30af' + try: + f = font.Font(root=self.root, family=family, exists=True) + except tkinter.TclError: + f = font.Font(root=self.root, family=family, exists=False) + self.assertEqual(f.cget('family'), family) + del f + gc_collect() + def test_actual(self): options = self.font.actual() self.assertGreaterEqual(set(options), diff --git a/Lib/lib-tk/tkFont.py b/Lib/lib-tk/tkFont.py index 113c983b01..b245623e30 100644 --- a/Lib/lib-tk/tkFont.py +++ b/Lib/lib-tk/tkFont.py @@ -47,8 +47,10 @@ class Font: def _set(self, kw): options = [] for k, v in kw.items(): + if not isinstance(v, basestring): + v = str(v) options.append("-"+k) - options.append(str(v)) + options.append(v) return tuple(options) def _get(self, args): diff --git a/Misc/NEWS b/Misc/NEWS index ba5d5d1782..e56af3a60c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -49,6 +49,8 @@ Extension Modules Library ------- +- bpo-30310: tkFont now supports unicode options (e.g. font family). + - bpo-30414: multiprocessing.Queue._feed background running thread do not break from main loop on exception.