summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/test/regrtest.py4
-rw-r--r--Lib/test/test_tk.py22
-rw-r--r--Lib/tkinter/test/test_tkinter/__init__.py0
-rw-r--r--Lib/tkinter/test/test_tkinter/test_text.py39
-rw-r--r--Lib/tkinter/ttk.py40
5 files changed, 84 insertions, 21 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 8ab0e48..203bd95 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -1075,6 +1075,7 @@ _expectations = {
test_pty
test_socketserver
test_tcl
+ test_tk
test_ttk_guionly
test_ttk_textonly
test_timeout
@@ -1092,6 +1093,7 @@ _expectations = {
test_kqueue
test_ossaudiodev
test_tcl
+ test_tk
test_ttk_guionly
test_ttk_textonly
test_zipimport
@@ -1109,6 +1111,7 @@ _expectations = {
test_ossaudiodev
test_pep277
test_tcl
+ test_tk
test_ttk_guionly
test_ttk_textonly
test_multiprocessing
@@ -1125,6 +1128,7 @@ _expectations = {
test_ossaudiodev
test_pep277
test_tcl
+ test_tk
test_ttk_guionly
test_ttk_textonly
test_multiprocessing
diff --git a/Lib/test/test_tk.py b/Lib/test/test_tk.py
new file mode 100644
index 0000000..8b21a0f
--- /dev/null
+++ b/Lib/test/test_tk.py
@@ -0,0 +1,22 @@
+import tkinter
+from tkinter.test import runtktests
+from test import support
+
+try:
+ tkinter.Button()
+except tkinter.TclError as msg:
+ # assuming tk is not available
+ raise support.TestSkipped("tk not available: %s" % msg)
+
+def test_main(enable_gui=False):
+ if enable_gui:
+ if support.use_resources is None:
+ support.use_resources = ['gui']
+ elif 'gui' not in support.use_resources:
+ support.use_resources.append('gui')
+
+ support.run_unittest(
+ *runtktests.get_tests(text=False, packages=['test_tkinter']))
+
+if __name__ == '__main__':
+ test_main(enable_gui=True)
diff --git a/Lib/tkinter/test/test_tkinter/__init__.py b/Lib/tkinter/test/test_tkinter/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Lib/tkinter/test/test_tkinter/__init__.py
diff --git a/Lib/tkinter/test/test_tkinter/test_text.py b/Lib/tkinter/test/test_tkinter/test_text.py
new file mode 100644
index 0000000..fffd455
--- /dev/null
+++ b/Lib/tkinter/test/test_tkinter/test_text.py
@@ -0,0 +1,39 @@
+import unittest
+import tkinter
+from test.support import requires, run_unittest
+from tkinter.ttk import setup_master
+
+requires('gui')
+
+class TextTest(unittest.TestCase):
+
+ def setUp(self):
+ self.root = setup_master()
+ self.text = tkinter.Text(self.root)
+
+ def tearDown(self):
+ self.text.destroy()
+
+
+ def test_search(self):
+ text = self.text
+
+ # pattern and index are obligatory arguments.
+ self.failUnlessRaises(tkinter.TclError, text.search, None, '1.0')
+ self.failUnlessRaises(tkinter.TclError, text.search, 'a', None)
+ self.failUnlessRaises(tkinter.TclError, text.search, None, None)
+
+ # Invalid text index.
+ self.failUnlessRaises(tkinter.TclError, text.search, '', 0)
+
+ # Check if we are getting the indices as strings -- you are likely
+ # to get Tcl_Obj under Tk 8.5 if Tkinter doesn't convert it.
+ text.insert('1.0', 'hi-test')
+ self.failUnlessEqual(text.search('-test', '1.0', 'end'), '1.2')
+ self.failUnlessEqual(text.search('test', '1.0', 'end'), '1.3')
+
+
+tests_gui = (TextTest, )
+
+if __name__ == "__main__":
+ run_unittest(*tests_gui)
diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py
index 89a9bf1..108a65f 100644
--- a/Lib/tkinter/ttk.py
+++ b/Lib/tkinter/ttk.py
@@ -23,7 +23,7 @@ __all__ = ["Button", "Checkbutton", "Combobox", "Entry", "Frame", "Label",
# Extensions
"LabeledScale", "OptionMenu",
# functions
- "tclobjs_to_py"]
+ "tclobjs_to_py", "setup_master"]
import tkinter
@@ -47,24 +47,6 @@ def _load_tile(master):
master.tk.eval('package require tile') # TclError may be raised here
master._tile_loaded = True
-
-def _setup_master(master=None):
- """If master is not None, itself is returned. If master is None,
- the default master is returned if there is one, otherwise a new
- master is created and returned.
-
- If it is not allowed to use the default root and master is None,
- RuntimeError is raised."""
- if master is None:
- if tkinter._support_default_root:
- master = tkinter._default_root or tkinter.Tk()
- else:
- raise RuntimeError(
- "No master specified and tkinter is "
- "configured to not support default root")
- return master
-
-
def _format_optdict(optdict, script=False, ignore=None):
"""Formats optdict to a tuple to pass it to tk.call.
@@ -367,6 +349,22 @@ def tclobjs_to_py(adict):
return adict
+def setup_master(master=None):
+ """If master is not None, itself is returned. If master is None,
+ the default master is returned if there is one, otherwise a new
+ master is created and returned.
+
+ If it is not allowed to use the default root and master is None,
+ RuntimeError is raised."""
+ if master is None:
+ if tkinter._support_default_root:
+ master = tkinter._default_root or tkinter.Tk()
+ else:
+ raise RuntimeError(
+ "No master specified and tkinter is "
+ "configured to not support default root")
+ return master
+
class Style(object):
"""Manipulate style database."""
@@ -374,7 +372,7 @@ class Style(object):
_name = "ttk::style"
def __init__(self, master=None):
- master = _setup_master(master)
+ master = setup_master(master)
if not getattr(master, '_tile_loaded', False):
# Load tile now, if needed
@@ -555,7 +553,7 @@ class Widget(tkinter.Widget):
active, disabled, focus, pressed, selected, background,
readonly, alternate, invalid
"""
- master = _setup_master(master)
+ master = setup_master(master)
if not getattr(master, '_tile_loaded', False):
# Load tile now, if needed
_load_tile(master)