diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py
index f619786..2191ca7 100644
--- a/Lib/tkinter/__init__.py
+++ b/Lib/tkinter/__init__.py
@@ -1352,7 +1352,7 @@
                 value = words[i+1]
                 if not value:
                     value = None
-                elif '.' in value:
+                elif '.' in str(value):
                     value = getdouble(value)
                 else:
                     value = getint(value)
@@ -1921,7 +1921,7 @@
         for i in range(0, len(words), 2):
             key = words[i][1:]
             value = words[i+1]
-            if value[:1] == '.':
+            if str(value)[:1] == '.':
                 value = self._nametowidget(value)
             dict[key] = value
         return dict
@@ -1972,7 +1972,7 @@
         for i in range(0, len(words), 2):
             key = words[i][1:]
             value = words[i+1]
-            if value[:1] == '.':
+            if str(value)[:1] == '.':
                 value = self._nametowidget(value)
             dict[key] = value
         return dict
@@ -2021,7 +2021,7 @@
         for i in range(0, len(words), 2):
             key = words[i][1:]
             value = words[i+1]
-            if value[:1] == '.':
+            if str(value)[:1] == '.':
                 value = self._nametowidget(value)
             dict[key] = value
         return dict
diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py
index 45a686a..890787b 100644
--- a/Lib/tkinter/test/test_ttk/test_widgets.py
+++ b/Lib/tkinter/test/test_ttk/test_widgets.py
@@ -105,7 +105,7 @@
 
         cbtn['command'] = ''
         res = cbtn.invoke()
-        self.assertEqual(res, '')
+        self.assertEqual(str(res), '')
         self.assertFalse(len(success) > 1)
         self.assertEqual(cbtn['offvalue'],
             cbtn.tk.globalgetvar(cbtn['variable']))
@@ -453,7 +453,7 @@
 
         cbtn2['command'] = ''
         res = cbtn2.invoke()
-        self.assertEqual(res, '')
+        self.assertEqual(str(res), '')
         self.assertFalse(len(success) > 1)
         self.assertEqual(cbtn2['value'], myvar.get())
         self.assertEqual(myvar.get(),
diff --git a/Misc/NEWS b/Misc/NEWS
index 2d505ed..446694a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -66,6 +66,8 @@
 Library
 -------
 
+- Issue #16809: Fixed some tkinter incompabilities with Tcl/Tk 8.6.
+
 - Issue #16809: Tkinter's splitlist() and split() methods now accept Tcl_Obj
   argument.
 
