mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
Issue #20072: Fixed multiple errors in tkinter with wantobjects is False.
* Misc.image_names(), Misc.image_types(), Wm.wm_colormapwindows(), and LabelFrame.panes() now always return a tuple. * Fixed error of comparing str and int in tt.LabeledScale._adjust(). * ttk.Notebook.index() now always returns int. * ttk.Notebook.tabs() now always returns a tuple. * ttk.Entry.bbox() now always returns a tuple of ints. * ttk.Entry.validate() now always correctly works. * ttk.Combobox.current() now always returns int. * ttk.Panedwindow.sashpos() now always returns int. * ttk.Treeview.bbox() now always returns a tuple of ints. * ttk.Treeview.get_children() now always returns a tuple. * ttk.Treeview.exists() now always correctly works. * ttk.Treeview.index() now always returns int. * ttk.Treeview.tag_has() now always returns 0 or 1. * And numerous other errors in methods which returns a tuple, list or dict. * Fixed ttk tests for wantobjects is False.
This commit is contained in:
parent
0455c3fd28
commit
a21acb5d95
7 changed files with 153 additions and 71 deletions
|
@ -29,7 +29,10 @@ class LabeledScaleTest(unittest.TestCase):
|
|||
name = myvar._name
|
||||
x = ttk.LabeledScale(variable=myvar)
|
||||
x.destroy()
|
||||
self.assertEqual(x.tk.globalgetvar(name), myvar.get())
|
||||
if x.tk.wantobjects():
|
||||
self.assertEqual(x.tk.globalgetvar(name), myvar.get())
|
||||
else:
|
||||
self.assertEqual(float(x.tk.globalgetvar(name)), myvar.get())
|
||||
del myvar
|
||||
self.assertRaises(tkinter.TclError, x.tk.globalgetvar, name)
|
||||
|
||||
|
@ -59,8 +62,10 @@ class LabeledScaleTest(unittest.TestCase):
|
|||
x.destroy()
|
||||
|
||||
# variable initialization/passing
|
||||
passed_expected = ((2.5, 2), ('0', 0), (0, 0), (10, 10),
|
||||
passed_expected = (('0', 0), (0, 0), (10, 10),
|
||||
(-1, -1), (sys.maxsize + 1, sys.maxsize + 1))
|
||||
if x.tk.wantobjects():
|
||||
passed_expected += ((2.5, 2),)
|
||||
for pair in passed_expected:
|
||||
x = ttk.LabeledScale(from_=pair[0])
|
||||
self.assertEqual(x.value, pair[1])
|
||||
|
@ -123,7 +128,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)
|
||||
self.assertEqual(lscale.label['text'], 0 if lscale.tk.wantobjects() else '0')
|
||||
self.assertEqual(curr_xcoord, int(linfo_2['x']))
|
||||
# change the range back
|
||||
lscale.scale.configure(from_=0, to=10)
|
||||
|
@ -145,15 +150,20 @@ class LabeledScaleTest(unittest.TestCase):
|
|||
# The following update is needed since the test doesn't use mainloop,
|
||||
# at the same time this shouldn't affect test outcome
|
||||
x.update()
|
||||
self.assertEqual(x.label['text'], newval)
|
||||
self.assertEqual(x.label['text'],
|
||||
newval if x.tk.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
|
||||
x.value = x.scale['to'] + 1 # no changes shouldn't happen
|
||||
if x.tk.wantobjects():
|
||||
conv = lambda x: x
|
||||
else:
|
||||
conv = int
|
||||
x.value = conv(x.scale['to']) + 1 # no changes shouldn't happen
|
||||
x.update()
|
||||
self.assertEqual(x.label['text'], newval)
|
||||
self.assertEqual(conv(x.label['text']), newval)
|
||||
self.assertEqual(x.scale.coords()[0],
|
||||
int(x.label.place_info()['x']))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue