summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2023-05-17 15:59:13 -0400
committerGitHub <noreply@github.com>2023-05-17 15:59:13 -0400
commitaed643baa968b4959b830d37750080cac546fba7 (patch)
tree41bf6e4888610acd65bb49b9a913e934d5f91ac8
parentc649df63e0d052044a4660101d5769ff46ae9234 (diff)
downloadcpython-git-aed643baa968b4959b830d37750080cac546fba7.tar.gz
gh-104496: IDLE - fix About for mixed tcl/tk versions (#104585)
Print both if they are different, as may happen in the future.
-rw-r--r--Lib/idlelib/NEWS.txt3
-rw-r--r--Lib/idlelib/help_about.py37
-rw-r--r--Lib/idlelib/idle_test/test_help_about.py4
-rw-r--r--Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst1
4 files changed, 22 insertions, 23 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index e97e3ca01e..f78e45e671 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -4,6 +4,9 @@ Released on 2023-10-02
=========================
+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.
diff --git a/Lib/idlelib/help_about.py b/Lib/idlelib/help_about.py
index a0085a40b9..cfa4ca781f 100644
--- a/Lib/idlelib/help_about.py
+++ b/Lib/idlelib/help_about.py
@@ -11,15 +11,12 @@ from tkinter import SUNKEN, TOP, BOTTOM, LEFT, X, BOTH, W, EW, NSEW, E
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):
@@ -45,7 +42,7 @@ class AboutDialog(Toplevel):
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)
@@ -76,8 +73,8 @@ class AboutDialog(Toplevel):
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)
@@ -102,13 +99,11 @@ class AboutDialog(Toplevel):
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,
@@ -128,10 +123,10 @@ class AboutDialog(Toplevel):
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,
diff --git a/Lib/idlelib/idle_test/test_help_about.py b/Lib/idlelib/idle_test/test_help_about.py
index b915535aca..8b79487b15 100644
--- a/Lib/idlelib/idle_test/test_help_about.py
+++ b/Lib/idlelib/idle_test/test_help_about.py
@@ -36,7 +36,7 @@ class LiveDialogTest(unittest.TestCase):
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"""
@@ -107,7 +107,7 @@ class DefaultTitleTest(unittest.TestCase):
"""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):
diff --git a/Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst b/Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst
new file mode 100644
index 0000000000..18d83150e9
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst
@@ -0,0 +1 @@
+About prints both tcl and tk versions if different (expected someday).