Skip to content

Commit 7370be3

Browse files
bpo-43013: Fix old tkinter module names in idlelib (GH-24326)
Lowercase 'tkColorChooser', 'tkFileDialog', 'tkSimpleDialog', and 'tkMessageBox' and remove 'tk'. Just lowercase 'tkFont' as 'font' is already used. Adjust import. (cherry picked from commit 879986d) Co-authored-by: Terry Jan Reedy <[email protected]>
1 parent 96bcf6f commit 7370be3

13 files changed

+66
-67
lines changed

Lib/idlelib/configdialog.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END)
1919
from tkinter.ttk import (Frame, LabelFrame, Button, Checkbutton, Entry, Label,
2020
OptionMenu, Notebook, Radiobutton, Scrollbar, Style)
21-
import tkinter.colorchooser as tkColorChooser
22-
import tkinter.font as tkFont
21+
from tkinter import colorchooser
22+
import tkinter.font as tkfont
2323
from tkinter import messagebox
2424

2525
from idlelib.config import idleConf, ConfigChanges
@@ -609,7 +609,7 @@ def load_font_cfg(self):
609609
font_bold = configured_font[2]=='bold'
610610

611611
# Set sorted no-duplicate editor font selection list and font_name.
612-
fonts = sorted(set(tkFont.families(self)))
612+
fonts = sorted(set(tkfont.families(self)))
613613
for font in fonts:
614614
self.fontlist.insert(END, font)
615615
self.font_name.set(font_name)
@@ -663,7 +663,7 @@ def set_samples(self, event=None):
663663
Updates font_sample and highlight page highlight_sample.
664664
"""
665665
font_name = self.font_name.get()
666-
font_weight = tkFont.BOLD if self.font_bold.get() else tkFont.NORMAL
666+
font_weight = tkfont.BOLD if self.font_bold.get() else tkfont.NORMAL
667667
new_font = (font_name, self.font_size.get(), font_weight)
668668
self.font_sample['font'] = new_font
669669
self.highlight_sample['font'] = new_font
@@ -1100,7 +1100,7 @@ def get_color(self):
11001100
target = self.highlight_target.get()
11011101
prev_color = self.style.lookup(self.frame_color_set['style'],
11021102
'background')
1103-
rgbTuplet, color_string = tkColorChooser.askcolor(
1103+
rgbTuplet, color_string = colorchooser.askcolor(
11041104
parent=self, title='Pick new color for : '+target,
11051105
initialcolor=prev_color)
11061106
if color_string and (color_string != prev_color):

Lib/idlelib/editor.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
from tkinter import *
1313
from tkinter.font import Font
1414
from tkinter.ttk import Scrollbar
15-
import tkinter.simpledialog as tkSimpleDialog
16-
import tkinter.messagebox as tkMessageBox
15+
from tkinter import simpledialog
16+
from tkinter import messagebox
1717

1818
from idlelib.config import idleConf
1919
from idlelib import configdialog
@@ -295,9 +295,9 @@ def __init__(self, flist=None, filename=None, key=None, root=None):
295295
window.register_callback(self.postwindowsmenu)
296296

297297
# Some abstractions so IDLE extensions are cross-IDE
298-
self.askyesno = tkMessageBox.askyesno
299-
self.askinteger = tkSimpleDialog.askinteger
300-
self.showerror = tkMessageBox.showerror
298+
self.askinteger = simpledialog.askinteger
299+
self.askyesno = messagebox.askyesno
300+
self.showerror = messagebox.showerror
301301

302302
# Add pseudoevents for former extension fixed keys.
303303
# (This probably needs to be done once in the process.)
@@ -596,7 +596,7 @@ def python_docs(self, event=None):
596596
try:
597597
os.startfile(self.help_url)
598598
except OSError as why:
599-
tkMessageBox.showerror(title='Document Start Failure',
599+
messagebox.showerror(title='Document Start Failure',
600600
message=str(why), parent=self.text)
601601
else:
602602
webbrowser.open(self.help_url)
@@ -927,7 +927,7 @@ def display_extra_help(helpfile=helpfile):
927927
try:
928928
os.startfile(helpfile)
929929
except OSError as why:
930-
tkMessageBox.showerror(title='Document Start Failure',
930+
messagebox.showerror(title='Document Start Failure',
931931
message=str(why), parent=self.text)
932932
else:
933933
webbrowser.open(helpfile)
@@ -963,7 +963,7 @@ def update_recent_files_list(self, new_file=None):
963963
except OSError as err:
964964
if not getattr(self.root, "recentfiles_message", False):
965965
self.root.recentfiles_message = True
966-
tkMessageBox.showwarning(title='IDLE Warning',
966+
messagebox.showwarning(title='IDLE Warning',
967967
message="Cannot save Recent Files list to disk.\n"
968968
f" {err}\n"
969969
"Select OK to continue.",

Lib/idlelib/filelist.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"idlelib.filelist"
22

33
import os
4-
from tkinter import messagebox as tkMessageBox
4+
from tkinter import messagebox
55

66

77
class FileList:
@@ -20,7 +20,7 @@ def open(self, filename, action=None):
2020
filename = self.canonize(filename)
2121
if os.path.isdir(filename):
2222
# This can happen when bad filename is passed on command line:
23-
tkMessageBox.showerror(
23+
messagebox.showerror(
2424
"File Error",
2525
"%r is a directory." % (filename,),
2626
master=self.root)
@@ -88,7 +88,7 @@ def filename_changed_edit(self, edit):
8888
if newkey in self.dict:
8989
conflict = self.dict[newkey]
9090
self.inversedict[conflict] = None
91-
tkMessageBox.showerror(
91+
messagebox.showerror(
9292
"Name Conflict",
9393
"You now have multiple edit windows open for %r" % (filename,),
9494
master=self.root)

Lib/idlelib/idle_test/mock_tk.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,27 +59,26 @@ def __call__(self, title, message, *args, **kwds):
5959
class Mbox:
6060
"""Mock for tkinter.messagebox with an Mbox_func for each function.
6161
62-
This module was 'tkMessageBox' in 2.x; hence the 'import as' in 3.x.
6362
Example usage in test_module.py for testing functions in module.py:
6463
---
6564
from idlelib.idle_test.mock_tk import Mbox
6665
import module
6766
68-
orig_mbox = module.tkMessageBox
67+
orig_mbox = module.messagebox
6968
showerror = Mbox.showerror # example, for attribute access in test methods
7069
7170
class Test(unittest.TestCase):
7271
7372
@classmethod
7473
def setUpClass(cls):
75-
module.tkMessageBox = Mbox
74+
module.messagebox = Mbox
7675
7776
@classmethod
7877
def tearDownClass(cls):
79-
module.tkMessageBox = orig_mbox
78+
module.messagebox = orig_mbox
8079
---
8180
For 'ask' functions, set func.result return value before calling the method
82-
that uses the message function. When tkMessageBox functions are the
81+
that uses the message function. When messagebox functions are the
8382
only gui alls in a method, this replacement makes the method gui-free,
8483
"""
8584
askokcancel = Mbox_func() # True or False

Lib/idlelib/idle_test/test_configdialog.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ def test_custom_name(self):
423423
def test_color(self):
424424
d = self.page
425425
d.on_new_color_set = Func()
426-
# self.color is only set in get_color through ColorChooser.
426+
# self.color is only set in get_color through colorchooser.
427427
d.color.set('green')
428428
self.assertEqual(d.on_new_color_set.called, 1)
429429
del d.on_new_color_set
@@ -540,8 +540,8 @@ def test_set_theme_type(self):
540540
def test_get_color(self):
541541
eq = self.assertEqual
542542
d = self.page
543-
orig_chooser = configdialog.tkColorChooser.askcolor
544-
chooser = configdialog.tkColorChooser.askcolor = Func()
543+
orig_chooser = configdialog.colorchooser.askcolor
544+
chooser = configdialog.colorchooser.askcolor = Func()
545545
gntn = d.get_new_theme_name = Func()
546546

547547
d.highlight_target.set('Editor Breakpoint')
@@ -582,7 +582,7 @@ def test_get_color(self):
582582
eq(d.color.get(), '#de0000')
583583

584584
del d.get_new_theme_name
585-
configdialog.tkColorChooser.askcolor = orig_chooser
585+
configdialog.colorchooser.askcolor = orig_chooser
586586

587587
def test_on_new_color_set(self):
588588
d = self.page

Lib/idlelib/idle_test/test_replace.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from idlelib.idle_test.mock_tk import Mbox
1111
import idlelib.searchengine as se
1212

13-
orig_mbox = se.tkMessageBox
13+
orig_mbox = se.messagebox
1414
showerror = Mbox.showerror
1515

1616

@@ -20,7 +20,7 @@ class ReplaceDialogTest(unittest.TestCase):
2020
def setUpClass(cls):
2121
cls.root = Tk()
2222
cls.root.withdraw()
23-
se.tkMessageBox = Mbox
23+
se.messagebox = Mbox
2424
cls.engine = se.SearchEngine(cls.root)
2525
cls.dialog = ReplaceDialog(cls.root, cls.engine)
2626
cls.dialog.bell = lambda: None
@@ -32,7 +32,7 @@ def setUpClass(cls):
3232

3333
@classmethod
3434
def tearDownClass(cls):
35-
se.tkMessageBox = orig_mbox
35+
se.messagebox = orig_mbox
3636
del cls.text, cls.dialog, cls.engine
3737
cls.root.destroy()
3838
del cls.root

Lib/idlelib/idle_test/test_searchengine.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import unittest
55
# from test.support import requires
66
from tkinter import BooleanVar, StringVar, TclError # ,Tk, Text
7-
import tkinter.messagebox as tkMessageBox
7+
from tkinter import messagebox
88
from idlelib.idle_test.mock_tk import Var, Mbox
99
from idlelib.idle_test.mock_tk import Text as mockText
1010
import re
@@ -19,13 +19,13 @@ def setUpModule():
1919
# Replace s-e module tkinter imports other than non-gui TclError.
2020
se.BooleanVar = Var
2121
se.StringVar = Var
22-
se.tkMessageBox = Mbox
22+
se.messagebox = Mbox
2323

2424
def tearDownModule():
2525
# Restore 'just in case', though other tests should also replace.
2626
se.BooleanVar = BooleanVar
2727
se.StringVar = StringVar
28-
se.tkMessageBox = tkMessageBox
28+
se.messagebox = messagebox
2929

3030

3131
class Mock:

Lib/idlelib/idle_test/test_squeezer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ def test_expand_dangerous_oupput(self):
396396
expandingbutton.base_text = expandingbutton.text
397397

398398
# Patch the message box module to always return False.
399-
with patch('idlelib.squeezer.tkMessageBox') as mock_msgbox:
399+
with patch('idlelib.squeezer.messagebox') as mock_msgbox:
400400
mock_msgbox.askokcancel.return_value = False
401401
mock_msgbox.askyesno.return_value = False
402402
# Trigger the expand event.
@@ -407,7 +407,7 @@ def test_expand_dangerous_oupput(self):
407407
self.assertEqual(expandingbutton.text.get('1.0', 'end-1c'), '')
408408

409409
# Patch the message box module to always return True.
410-
with patch('idlelib.squeezer.tkMessageBox') as mock_msgbox:
410+
with patch('idlelib.squeezer.messagebox') as mock_msgbox:
411411
mock_msgbox.askokcancel.return_value = True
412412
mock_msgbox.askyesno.return_value = True
413413
# Trigger the expand event.

Lib/idlelib/iomenu.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import tempfile
66
import tokenize
77

8-
import tkinter.filedialog as tkFileDialog
9-
import tkinter.messagebox as tkMessageBox
8+
from tkinter import filedialog
9+
from tkinter import messagebox
1010
from tkinter.simpledialog import askstring
1111

1212
import idlelib
@@ -147,10 +147,10 @@ def loadfile(self, filename):
147147
eol_convention = f.newlines
148148
converted = True
149149
except OSError as err:
150-
tkMessageBox.showerror("I/O Error", str(err), parent=self.text)
150+
messagebox.showerror("I/O Error", str(err), parent=self.text)
151151
return False
152152
except UnicodeDecodeError:
153-
tkMessageBox.showerror("Decoding Error",
153+
messagebox.showerror("Decoding Error",
154154
"File %s\nFailed to Decode" % filename,
155155
parent=self.text)
156156
return False
@@ -159,7 +159,7 @@ def loadfile(self, filename):
159159
# If the file does not contain line separators, it is None.
160160
# If the file contains mixed line separators, it is a tuple.
161161
if eol_convention is not None:
162-
tkMessageBox.showwarning("Mixed Newlines",
162+
messagebox.showwarning("Mixed Newlines",
163163
"Mixed newlines detected.\n"
164164
"The file will be changed on save.",
165165
parent=self.text)
@@ -187,10 +187,10 @@ def maybesave(self):
187187
return "yes"
188188
message = "Do you want to save %s before closing?" % (
189189
self.filename or "this untitled document")
190-
confirm = tkMessageBox.askyesnocancel(
190+
confirm = messagebox.askyesnocancel(
191191
title="Save On Close",
192192
message=message,
193-
default=tkMessageBox.YES,
193+
default=messagebox.YES,
194194
parent=self.text)
195195
if confirm:
196196
reply = "yes"
@@ -249,7 +249,7 @@ def writefile(self, filename):
249249
os.fsync(f.fileno())
250250
return True
251251
except OSError as msg:
252-
tkMessageBox.showerror("I/O Error", str(msg),
252+
messagebox.showerror("I/O Error", str(msg),
253253
parent=self.text)
254254
return False
255255

@@ -286,7 +286,7 @@ def encode(self, chars):
286286
failed = str(err)
287287
except UnicodeEncodeError:
288288
failed = "Invalid encoding '%s'" % enc
289-
tkMessageBox.showerror(
289+
messagebox.showerror(
290290
"I/O Error",
291291
"%s.\nSaving as UTF-8" % failed,
292292
parent=self.text)
@@ -295,10 +295,10 @@ def encode(self, chars):
295295
return chars.encode('utf-8-sig')
296296

297297
def print_window(self, event):
298-
confirm = tkMessageBox.askokcancel(
298+
confirm = messagebox.askokcancel(
299299
title="Print",
300300
message="Print to Default Printer",
301-
default=tkMessageBox.OK,
301+
default=messagebox.OK,
302302
parent=self.text)
303303
if not confirm:
304304
self.text.focus_set()
@@ -336,10 +336,10 @@ def print_window(self, event):
336336
status + output
337337
if output:
338338
output = "Printing command: %s\n" % repr(command) + output
339-
tkMessageBox.showerror("Print status", output, parent=self.text)
339+
messagebox.showerror("Print status", output, parent=self.text)
340340
else: #no printing for this platform
341341
message = "Printing is not enabled for this platform: %s" % platform
342-
tkMessageBox.showinfo("Print status", message, parent=self.text)
342+
messagebox.showinfo("Print status", message, parent=self.text)
343343
if tempfilename:
344344
os.unlink(tempfilename)
345345
return "break"
@@ -358,7 +358,7 @@ def print_window(self, event):
358358
def askopenfile(self):
359359
dir, base = self.defaultfilename("open")
360360
if not self.opendialog:
361-
self.opendialog = tkFileDialog.Open(parent=self.text,
361+
self.opendialog = filedialog.Open(parent=self.text,
362362
filetypes=self.filetypes)
363363
filename = self.opendialog.show(initialdir=dir, initialfile=base)
364364
return filename
@@ -378,7 +378,7 @@ def defaultfilename(self, mode="open"):
378378
def asksavefile(self):
379379
dir, base = self.defaultfilename("save")
380380
if not self.savedialog:
381-
self.savedialog = tkFileDialog.SaveAs(
381+
self.savedialog = filedialog.SaveAs(
382382
parent=self.text,
383383
filetypes=self.filetypes,
384384
defaultextension=self.defaultextension)

0 commit comments

Comments
 (0)