https://github.com/python/cpython/commit/7d619c2fea131722d0bfdad150c081c44cc0abd7 commit: 7d619c2fea131722d0bfdad150c081c44cc0abd7 branch: main author: Serhiy Storchaka <[email protected]> committer: serhiy-storchaka <[email protected]> date: 2026-07-05T13:51:34+03:00 summary:
gh-69134: Wait until mapped in SimpleDialog keyboard tests (GH-152690) The SimpleDialog keyboard tests generate key events after focus_force(), which on Windows are dropped until the toplevel is mapped, so they could fail intermittently (seen on the Windows10 buildbot as test_return_no_default). Wait until the window is mapped in each of these tests, as GH-152599 did for the other keyboard tests. Co-authored-by: Claude Opus 4.8 <[email protected]> files: M Lib/test/test_tkinter/test_simpledialog.py diff --git a/Lib/test/test_tkinter/test_simpledialog.py b/Lib/test/test_tkinter/test_simpledialog.py index 5c739d9ad6e6422..33a0173ba67adb9 100644 --- a/Lib/test/test_tkinter/test_simpledialog.py +++ b/Lib/test/test_tkinter/test_simpledialog.py @@ -44,6 +44,7 @@ def test_use_ttk(self): self.assertEqual(str(d.root.cget('background')), ttk.Style(d.root).lookup('.', 'background')) # The bindings work with the themed buttons too. + self.require_mapped(d.root) d._buttons[0].focus_force() d.root.update() d.root.event_generate('<Return>') @@ -139,6 +140,7 @@ def test_alt_key(self): # Alt + an underlined character (the "underline" button option) invokes # the matching button (cf. tk::AmpWidget in tk::MessageBox). d = self.create(buttons=['Yes', {'text': 'No', 'underline': 0}]) + self.require_mapped(d.root) d._buttons[0].focus_force() d.root.update() d.root.event_generate('<Alt-n>') # "No" -> underline 0 -> "N" @@ -149,6 +151,7 @@ def test_return_invokes_focused_button(self): # <Return> invokes the button with the focus, even if it is not the # default and the focus was not moved by keyboard traversal. d = self.create(buttons=['Yes', 'No']) # default 0 + self.require_mapped(d.root) d._buttons[1].focus_force() d.root.update() d.root.event_generate('<Return>') @@ -158,6 +161,7 @@ def test_return_invokes_focused_button(self): def test_focus_next_then_return(self): # <Tab> moves the focus to the next button; <Return> invokes it. d = self.create(buttons=['Yes', 'No']) + self.require_mapped(d.root) d._buttons[0].focus_force() d.root.update() d._buttons[0].event_generate('<Tab>') @@ -169,6 +173,7 @@ def test_focus_next_then_return(self): def test_focus_prev_then_return(self): # <Shift-Tab> moves the focus to the previous button. d = self.create(buttons=['Yes', 'No']) + self.require_mapped(d.root) d._buttons[1].focus_force() d.root.update() d._buttons[1].event_generate('<Shift-Tab>') @@ -180,6 +185,7 @@ def test_focus_prev_then_return(self): def test_return_activates_default(self): # <Return> with the focus off the buttons invokes the default button. d = self.create() # default 0 + self.require_mapped(d.root) d.root.focus_force() # the dialog, not a button, has the focus d.root.update() d.root.event_generate('<Return>') @@ -190,6 +196,7 @@ def test_return_no_default(self): # With no default button, <Return> off the buttons rings the bell and # leaves the dialog open instead of activating a button. d = self.create(default=None) + self.require_mapped(d.root) d.root.focus_force() # the dialog, not a button, has the focus d.root.update() bells = [] _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
