summaryrefslogtreecommitdiffstats
path: root/Lib/tkinter/test/test_ttk/test_extensions.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/tkinter/test/test_ttk/test_extensions.py')
-rw-r--r--Lib/tkinter/test/test_ttk/test_extensions.py105
1 files changed, 56 insertions, 49 deletions
diff --git a/Lib/tkinter/test/test_ttk/test_extensions.py b/Lib/tkinter/test/test_ttk/test_extensions.py
index d699546..c3af06c 100644
--- a/Lib/tkinter/test/test_ttk/test_extensions.py
+++ b/Lib/tkinter/test/test_ttk/test_extensions.py
@@ -2,34 +2,30 @@ import sys
import unittest
import tkinter
from tkinter import ttk
-from test.support import requires, run_unittest
-
-import tkinter.test.support as support
+from test.support import requires, run_unittest, swap_attr
+from tkinter.test.support import AbstractTkTest, destroy_default_root
requires('gui')
-class LabeledScaleTest(unittest.TestCase):
-
- def setUp(self):
- support.root_deiconify()
+class LabeledScaleTest(AbstractTkTest, unittest.TestCase):
def tearDown(self):
- support.root_withdraw()
-
+ self.root.update_idletasks()
+ super().tearDown()
def test_widget_destroy(self):
# automatically created variable
- x = ttk.LabeledScale()
+ x = ttk.LabeledScale(self.root)
var = x._variable._name
x.destroy()
self.assertRaises(tkinter.TclError, x.tk.globalgetvar, var)
# manually created variable
- myvar = tkinter.DoubleVar()
+ myvar = tkinter.DoubleVar(self.root)
name = myvar._name
- x = ttk.LabeledScale(variable=myvar)
+ x = ttk.LabeledScale(self.root, variable=myvar)
x.destroy()
- if x.tk.wantobjects():
+ if self.wantobjects:
self.assertEqual(x.tk.globalgetvar(name), myvar.get())
else:
self.assertEqual(float(x.tk.globalgetvar(name)), myvar.get())
@@ -37,26 +33,36 @@ class LabeledScaleTest(unittest.TestCase):
self.assertRaises(tkinter.TclError, x.tk.globalgetvar, name)
# checking that the tracing callback is properly removed
- myvar = tkinter.IntVar()
+ myvar = tkinter.IntVar(self.root)
# LabeledScale will start tracing myvar
- x = ttk.LabeledScale(variable=myvar)
+ x = ttk.LabeledScale(self.root, variable=myvar)
x.destroy()
# Unless the tracing callback was removed, creating a new
# LabeledScale with the same var will cause an error now. This
# happens because the variable will be set to (possibly) a new
# value which causes the tracing callback to be called and then
# it tries calling instance attributes not yet defined.
- ttk.LabeledScale(variable=myvar)
+ ttk.LabeledScale(self.root, variable=myvar)
if hasattr(sys, 'last_type'):
self.assertNotEqual(sys.last_type, tkinter.TclError)
+ def test_initialization_no_master(self):
+ # no master passing
+ with swap_attr(tkinter, '_default_root', None), \
+ swap_attr(tkinter, '_support_default_root', True):
+ try:
+ x = ttk.LabeledScale()
+ self.assertIsNotNone(tkinter._default_root)
+ self.assertEqual(x.master, tkinter._default_root)
+ self.assertEqual(x.tk, tkinter._default_root.tk)
+ x.destroy()
+ finally:
+ destroy_default_root()
+
def test_initialization(self):
# master passing
- x = ttk.LabeledScale()
- self.assertEqual(x.master, tkinter._default_root)
- x.destroy()
- master = tkinter.Frame()
+ master = tkinter.Frame(self.root)
x = ttk.LabeledScale(master)
self.assertEqual(x.master, master)
x.destroy()
@@ -64,25 +70,25 @@ class LabeledScaleTest(unittest.TestCase):
# variable initialization/passing
passed_expected = (('0', 0), (0, 0), (10, 10),
(-1, -1), (sys.maxsize + 1, sys.maxsize + 1))
- if x.tk.wantobjects():
+ if self.wantobjects:
passed_expected += ((2.5, 2),)
for pair in passed_expected:
- x = ttk.LabeledScale(from_=pair[0])
+ x = ttk.LabeledScale(self.root, from_=pair[0])
self.assertEqual(x.value, pair[1])
x.destroy()
- x = ttk.LabeledScale(from_='2.5')
+ x = ttk.LabeledScale(self.root, from_='2.5')
self.assertRaises(ValueError, x._variable.get)
x.destroy()
- x = ttk.LabeledScale(from_=None)
+ x = ttk.LabeledScale(self.root, from_=None)
self.assertRaises(ValueError, x._variable.get)
x.destroy()
# variable should have its default value set to the from_ value
- myvar = tkinter.DoubleVar(value=20)
- x = ttk.LabeledScale(variable=myvar)
+ myvar = tkinter.DoubleVar(self.root, value=20)
+ x = ttk.LabeledScale(self.root, variable=myvar)
self.assertEqual(x.value, 0)
x.destroy()
# check that it is really using a DoubleVar
- x = ttk.LabeledScale(variable=myvar, from_=0.5)
+ x = ttk.LabeledScale(self.root, variable=myvar, from_=0.5)
self.assertEqual(x.value, 0.5)
self.assertEqual(x._variable._name, myvar._name)
x.destroy()
@@ -91,25 +97,26 @@ class LabeledScaleTest(unittest.TestCase):
def check_positions(scale, scale_pos, label, label_pos):
self.assertEqual(scale.pack_info()['side'], scale_pos)
self.assertEqual(label.place_info()['anchor'], label_pos)
- x = ttk.LabeledScale(compound='top')
+ x = ttk.LabeledScale(self.root, compound='top')
check_positions(x.scale, 'bottom', x.label, 'n')
x.destroy()
- x = ttk.LabeledScale(compound='bottom')
+ x = ttk.LabeledScale(self.root, compound='bottom')
check_positions(x.scale, 'top', x.label, 's')
x.destroy()
- x = ttk.LabeledScale(compound='unknown') # invert default positions
+ # invert default positions
+ x = ttk.LabeledScale(self.root, compound='unknown')
check_positions(x.scale, 'top', x.label, 's')
x.destroy()
- x = ttk.LabeledScale() # take default positions
+ x = ttk.LabeledScale(self.root) # take default positions
check_positions(x.scale, 'bottom', x.label, 'n')
x.destroy()
# extra, and invalid, kwargs
- self.assertRaises(tkinter.TclError, ttk.LabeledScale, a='b')
+ self.assertRaises(tkinter.TclError, ttk.LabeledScale, master, a='b')
def test_horizontal_range(self):
- lscale = ttk.LabeledScale(from_=0, to=10)
+ lscale = ttk.LabeledScale(self.root, from_=0, to=10)
lscale.pack()
lscale.wait_visibility()
lscale.update()
@@ -128,7 +135,7 @@ class LabeledScaleTest(unittest.TestCase):
self.assertNotEqual(prev_xcoord, curr_xcoord)
# the label widget should have been repositioned too
linfo_2 = lscale.label.place_info()
- self.assertEqual(lscale.label['text'], 0 if lscale.tk.wantobjects() else '0')
+ self.assertEqual(lscale.label['text'], 0 if self.wantobjects else '0')
self.assertEqual(curr_xcoord, int(linfo_2['x']))
# change the range back
lscale.scale.configure(from_=0, to=10)
@@ -139,7 +146,7 @@ class LabeledScaleTest(unittest.TestCase):
def test_variable_change(self):
- x = ttk.LabeledScale()
+ x = ttk.LabeledScale(self.root)
x.pack()
x.wait_visibility()
x.update()
@@ -151,13 +158,13 @@ class LabeledScaleTest(unittest.TestCase):
# at the same time this shouldn't affect test outcome
x.update()
self.assertEqual(x.label['text'],
- newval if x.tk.wantobjects() else str(newval))
+ newval if self.wantobjects else str(newval))
self.assertGreater(x.scale.coords()[0], curr_xcoord)
self.assertEqual(x.scale.coords()[0],
int(x.label.place_info()['x']))
# value outside range
- if x.tk.wantobjects():
+ if self.wantobjects:
conv = lambda x: x
else:
conv = int
@@ -171,7 +178,7 @@ class LabeledScaleTest(unittest.TestCase):
def test_resize(self):
- x = ttk.LabeledScale()
+ x = ttk.LabeledScale(self.root)
x.pack(expand=True, fill='both')
x.wait_visibility()
x.update()
@@ -190,20 +197,20 @@ class LabeledScaleTest(unittest.TestCase):
x.destroy()
-class OptionMenuTest(unittest.TestCase):
+class OptionMenuTest(AbstractTkTest, unittest.TestCase):
def setUp(self):
- support.root_deiconify()
- self.textvar = tkinter.StringVar()
+ super().setUp()
+ self.textvar = tkinter.StringVar(self.root)
def tearDown(self):
del self.textvar
- support.root_withdraw()
+ super().tearDown()
def test_widget_destroy(self):
- var = tkinter.StringVar()
- optmenu = ttk.OptionMenu(None, var)
+ var = tkinter.StringVar(self.root)
+ optmenu = ttk.OptionMenu(self.root, var)
name = var._name
optmenu.update_idletasks()
optmenu.destroy()
@@ -214,9 +221,9 @@ class OptionMenuTest(unittest.TestCase):
def test_initialization(self):
self.assertRaises(tkinter.TclError,
- ttk.OptionMenu, None, self.textvar, invalid='thing')
+ ttk.OptionMenu, self.root, self.textvar, invalid='thing')
- optmenu = ttk.OptionMenu(None, self.textvar, 'b', 'a', 'b')
+ optmenu = ttk.OptionMenu(self.root, self.textvar, 'b', 'a', 'b')
self.assertEqual(optmenu._variable.get(), 'b')
self.assertTrue(optmenu['menu'])
@@ -228,7 +235,7 @@ class OptionMenuTest(unittest.TestCase):
def test_menu(self):
items = ('a', 'b', 'c')
default = 'a'
- optmenu = ttk.OptionMenu(None, self.textvar, default, *items)
+ optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items)
found_default = False
for i in range(len(items)):
value = optmenu['menu'].entrycget(i, 'value')
@@ -240,7 +247,7 @@ class OptionMenuTest(unittest.TestCase):
# default shouldn't be in menu if it is not part of values
default = 'd'
- optmenu = ttk.OptionMenu(None, self.textvar, default, *items)
+ optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items)
curr = None
i = 0
while True:
@@ -269,7 +276,7 @@ class OptionMenuTest(unittest.TestCase):
def cb_test(item):
self.assertEqual(item, items[1])
success.append(True)
- optmenu = ttk.OptionMenu(None, self.textvar, 'a', command=cb_test,
+ optmenu = ttk.OptionMenu(self.root, self.textvar, 'a', command=cb_test,
*items)
optmenu['menu'].invoke(1)
if not success: