Skip to content

Commit

Permalink
[3.11] pythongh-104496: IDLE - fix About for mixed tcl/tk versions (p…
Browse files Browse the repository at this point in the history
…ythonGH-104585) (python#104587)

pythongh-104496: IDLE - fix About for mixed tcl/tk versions (pythonGH-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]>
  • Loading branch information
miss-islington and terryjreedy authored May 17, 2023
1 parent f106aef commit 0560fd3
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 23 deletions.
3 changes: 3 additions & 0 deletions Lib/idlelib/NEWS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ Released after 2022-10-24
=========================


gh-104486: Make About print both tcl and tk versions if different,
as is expected someday.

gh-88496 Fix IDLE test hang on macOS.

gh-103314 Support sys.last_exc after exceptions in Shell.
Expand Down
37 changes: 16 additions & 21 deletions Lib/idlelib/help_about.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,12 @@

from idlelib import textview

version = python_version()
pyver = python_version()


def build_bits():
"Return bits for platform."
if sys.platform == 'darwin':
return '64' if sys.maxsize > 2**32 else '32'
else:
return architecture()[0][:2]
if sys.platform == 'darwin':
bits = '64' if sys.maxsize > 2**32 else '32'
else:
bits = architecture()[0][:2]


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

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

pyver = Label(frame_background,
text='Python version: ' + version,
fg=self.fg, bg=self.bg)
pyver.grid(row=9, column=0, sticky=W, padx=10, pady=0)
tkver = Label(frame_background, text=f'Tk version: {tk_patchlevel}',
fg=self.fg, bg=self.bg)
tkver.grid(row=9, column=1, sticky=W, padx=2, pady=0)
tclver = str(self.info_patchlevel())
tkver = ' and ' + tkpatch if tkpatch != tclver else ''
versions = f"Python {pyver} with tcl/tk {tclver}{tkver}"
vers = Label(frame_background, text=versions, fg=self.fg, bg=self.bg)
vers.grid(row=9, column=0, sticky=W, padx=10, pady=0)
py_buttons = Frame(frame_background, bg=self.bg)
py_buttons.grid(row=10, column=0, columnspan=2, sticky=NSEW)
self.py_license = Button(py_buttons, text='License', width=8,
Expand All @@ -128,10 +123,10 @@ def create_widgets(self):
height=2, bg=self.bg).grid(row=11, column=0, sticky=EW,
columnspan=3, padx=5, pady=5)

idlever = Label(frame_background,
text='IDLE version: ' + version,
idle = Label(frame_background,
text='IDLE',
fg=self.fg, bg=self.bg)
idlever.grid(row=12, column=0, sticky=W, padx=10, pady=0)
idle.grid(row=12, column=0, sticky=W, padx=10, pady=0)
idle_buttons = Frame(frame_background, bg=self.bg)
idle_buttons.grid(row=13, column=0, columnspan=3, sticky=NSEW)
self.readme = Button(idle_buttons, text='README', width=8,
Expand Down
4 changes: 2 additions & 2 deletions Lib/idlelib/idle_test/test_help_about.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def tearDownClass(cls):
del cls.root

def test_build_bits(self):
self.assertIn(help_about.build_bits(), ('32', '64'))
self.assertIn(help_about.bits, ('32', '64'))

def test_dialog_title(self):
"""Test about dialog title"""
Expand Down Expand Up @@ -107,7 +107,7 @@ def test_dialog_title(self):
"""Test about dialog title"""
self.assertEqual(self.dialog.title(),
f'About IDLE {python_version()}'
f' ({help_about.build_bits()} bit)')
f' ({help_about.bits} bit)')


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

0 comments on commit 0560fd3

Please sign in to comment.