diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2020-12-25 18:19:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-25 18:19:20 (GMT) |
commit | 675c97eb6c7c14c6a68ebf476c52931c1e5c1220 (patch) | |
tree | c79798eb94cff2cd416dc10ae4e127da85460a51 /Lib/tkinter/test/test_tkinter/test_simpledialog.py | |
parent | 586f3dbe15139cafb2a6ffb82cea146906561844 (diff) | |
download | cpython-675c97eb6c7c14c6a68ebf476c52931c1e5c1220.zip cpython-675c97eb6c7c14c6a68ebf476c52931c1e5c1220.tar.gz cpython-675c97eb6c7c14c6a68ebf476c52931c1e5c1220.tar.bz2 |
bpo-42721: Improve using simple dialogs without root window (GH-23897)
When simple query dialogs (tkinter.simpledialog), message boxes
(tkinter.messagebox) or color choose dialog (tkinter.colorchooser)
are created without arguments master and parent, and the default
root window is not yet created, a new temporary hidden root window
will be created automatically. It will not be set as the default root
window and will be destroyed right after closing the dialog window.
It will help to use these simple dialog windows in programs which do
not need other GUI.
Previously, message boxes and color chooser created the blank root
window and left it after closing the dialog window, and query dialogs
just raised an exception.
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Diffstat (limited to 'Lib/tkinter/test/test_tkinter/test_simpledialog.py')
-rw-r--r-- | Lib/tkinter/test/test_tkinter/test_simpledialog.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/Lib/tkinter/test/test_tkinter/test_simpledialog.py b/Lib/tkinter/test/test_tkinter/test_simpledialog.py index 9119172..b64b854 100644 --- a/Lib/tkinter/test/test_tkinter/test_simpledialog.py +++ b/Lib/tkinter/test/test_tkinter/test_simpledialog.py @@ -10,13 +10,25 @@ requires('gui') class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): def test_askinteger(self): - self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") - root = tkinter.Tk() - with swap_attr(Dialog, 'wait_window', lambda self, w: w.destroy()): + @staticmethod + def mock_wait_window(w): + nonlocal ismapped + ismapped = w.master.winfo_ismapped() + w.destroy() + + with swap_attr(Dialog, 'wait_window', mock_wait_window): + ismapped = None + askinteger("Go To Line", "Line number") + self.assertEqual(ismapped, False) + + root = tkinter.Tk() + ismapped = None askinteger("Go To Line", "Line number") - root.destroy() - tkinter.NoDefaultRoot() - self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") + self.assertEqual(ismapped, True) + root.destroy() + + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") tests_gui = (DefaultRootTest,) |