Skip to content

Commit 0560fd3

Browse files
[3.11] gh-104496: IDLE - fix About for mixed tcl/tk versions (GH-104585) (#104587)
gh-104496: IDLE - fix About for mixed tcl/tk versions (GH-104585) Print both if they are different, as may happen in the future. (cherry picked from commit aed643b) Co-authored-by: Terry Jan Reedy <[email protected]>
1 parent f106aef commit 0560fd3

File tree

4 files changed

+22
-23
lines changed

4 files changed

+22
-23
lines changed

Lib/idlelib/NEWS.txt

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ Released after 2022-10-24
44
=========================
55

66

7+
gh-104486: Make About print both tcl and tk versions if different,
8+
as is expected someday.
9+
710
gh-88496 Fix IDLE test hang on macOS.
811

912
gh-103314 Support sys.last_exc after exceptions in Shell.

Lib/idlelib/help_about.py

+16-21
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,12 @@
1111

1212
from idlelib import textview
1313

14-
version = python_version()
14+
pyver = python_version()
1515

16-
17-
def build_bits():
18-
"Return bits for platform."
19-
if sys.platform == 'darwin':
20-
return '64' if sys.maxsize > 2**32 else '32'
21-
else:
22-
return architecture()[0][:2]
16+
if sys.platform == 'darwin':
17+
bits = '64' if sys.maxsize > 2**32 else '32'
18+
else:
19+
bits = architecture()[0][:2]
2320

2421

2522
class AboutDialog(Toplevel):
@@ -45,7 +42,7 @@ def __init__(self, parent, title=None, *, _htest=False, _utest=False):
4542
self.create_widgets()
4643
self.resizable(height=False, width=False)
4744
self.title(title or
48-
f'About IDLE {version} ({build_bits()} bit)')
45+
f'About IDLE {pyver} ({bits} bit)')
4946
self.transient(parent)
5047
self.grab_set()
5148
self.protocol("WM_DELETE_WINDOW", self.ok)
@@ -76,8 +73,8 @@ def create_widgets(self):
7673
bg=self.bg, font=('courier', 24, 'bold'))
7774
header.grid(row=0, column=0, sticky=E, padx=10, pady=10)
7875

79-
tk_patchlevel = self.info_patchlevel()
80-
ext = '.png' if tk_patchlevel >= (8, 6) else '.gif'
76+
tkpatch = self._root().getvar('tk_patchLevel')
77+
ext = '.png' if tkpatch >= '8.6' else '.gif'
8178
icon = os.path.join(os.path.abspath(os.path.dirname(__file__)),
8279
'Icons', f'idle_48{ext}')
8380
self.icon_image = PhotoImage(master=self._root(), file=icon)
@@ -102,13 +99,11 @@ def create_widgets(self):
10299
height=2, bg=self.bg).grid(row=8, column=0, sticky=EW,
103100
columnspan=3, padx=5, pady=5)
104101

105-
pyver = Label(frame_background,
106-
text='Python version: ' + version,
107-
fg=self.fg, bg=self.bg)
108-
pyver.grid(row=9, column=0, sticky=W, padx=10, pady=0)
109-
tkver = Label(frame_background, text=f'Tk version: {tk_patchlevel}',
110-
fg=self.fg, bg=self.bg)
111-
tkver.grid(row=9, column=1, sticky=W, padx=2, pady=0)
102+
tclver = str(self.info_patchlevel())
103+
tkver = ' and ' + tkpatch if tkpatch != tclver else ''
104+
versions = f"Python {pyver} with tcl/tk {tclver}{tkver}"
105+
vers = Label(frame_background, text=versions, fg=self.fg, bg=self.bg)
106+
vers.grid(row=9, column=0, sticky=W, padx=10, pady=0)
112107
py_buttons = Frame(frame_background, bg=self.bg)
113108
py_buttons.grid(row=10, column=0, columnspan=2, sticky=NSEW)
114109
self.py_license = Button(py_buttons, text='License', width=8,
@@ -128,10 +123,10 @@ def create_widgets(self):
128123
height=2, bg=self.bg).grid(row=11, column=0, sticky=EW,
129124
columnspan=3, padx=5, pady=5)
130125

131-
idlever = Label(frame_background,
132-
text='IDLE version: ' + version,
126+
idle = Label(frame_background,
127+
text='IDLE',
133128
fg=self.fg, bg=self.bg)
134-
idlever.grid(row=12, column=0, sticky=W, padx=10, pady=0)
129+
idle.grid(row=12, column=0, sticky=W, padx=10, pady=0)
135130
idle_buttons = Frame(frame_background, bg=self.bg)
136131
idle_buttons.grid(row=13, column=0, columnspan=3, sticky=NSEW)
137132
self.readme = Button(idle_buttons, text='README', width=8,

Lib/idlelib/idle_test/test_help_about.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def tearDownClass(cls):
3636
del cls.root
3737

3838
def test_build_bits(self):
39-
self.assertIn(help_about.build_bits(), ('32', '64'))
39+
self.assertIn(help_about.bits, ('32', '64'))
4040

4141
def test_dialog_title(self):
4242
"""Test about dialog title"""
@@ -107,7 +107,7 @@ def test_dialog_title(self):
107107
"""Test about dialog title"""
108108
self.assertEqual(self.dialog.title(),
109109
f'About IDLE {python_version()}'
110-
f' ({help_about.build_bits()} bit)')
110+
f' ({help_about.bits} bit)')
111111

112112

113113
class CloseTest(unittest.TestCase):
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
About prints both tcl and tk versions if different (expected someday).

0 commit comments

Comments
 (0)