Skip to content

Commit

Permalink
bpo-33987: IDLE - use ttk Frame for ttk widgets (GH-11395)
Browse files Browse the repository at this point in the history
(cherry picked from commit aff0ada)

Co-authored-by: Terry Jan Reedy <[email protected]>
  • Loading branch information
miss-islington and terryjreedy authored Jan 3, 2019
1 parent d7cb203 commit b364caa
Show file tree
Hide file tree
Showing 13 changed files with 38 additions and 28 deletions.
2 changes: 1 addition & 1 deletion Lib/idlelib/autocomplete_w.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import platform

from tkinter import *
from tkinter.ttk import Scrollbar
from tkinter.ttk import Frame, Scrollbar

from idlelib.autocomplete import COMPLETE_FILES, COMPLETE_ATTRIBUTES
from idlelib.multicall import MC_SHIFT
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/config_key.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Dialog for building Tkinter accelerator key bindings
"""
from tkinter import Toplevel, Listbox, Text, StringVar, TclError
from tkinter.ttk import Button, Checkbutton, Entry, Frame, Label, Scrollbar
from tkinter.ttk import Frame, Button, Checkbutton, Entry, Label, Scrollbar
from tkinter import messagebox
import string
import sys
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/configdialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
TOP, BOTTOM, RIGHT, LEFT, SOLID, GROOVE,
NONE, BOTH, X, Y, W, E, EW, NS, NSEW, NW,
HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END)
from tkinter.ttk import (Button, Checkbutton, Entry, Frame, Label, LabelFrame,
from tkinter.ttk import (Frame, LabelFrame, Button, Checkbutton, Entry, Label,
OptionMenu, Notebook, Radiobutton, Scrollbar, Style)
import tkinter.colorchooser as tkColorChooser
import tkinter.font as tkFont
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/debugger.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import os

from tkinter import *
from tkinter.ttk import Scrollbar
from tkinter.ttk import Frame, Scrollbar

from idlelib import macosx
from idlelib.scrolledlist import ScrolledList
Expand Down
11 changes: 7 additions & 4 deletions Lib/idlelib/grep.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import sys

from tkinter import StringVar, BooleanVar
from tkinter.ttk import Checkbutton
from tkinter.ttk import Checkbutton # Frame imported in ...Base

from idlelib.searchbase import SearchDialogBase
from idlelib import searchengine
Expand Down Expand Up @@ -173,23 +173,26 @@ def findfiles(self, dir, base, rec):

def _grep_dialog(parent): # htest #
from tkinter import Toplevel, Text, SEL, END
from tkinter.ttk import Button
from tkinter.ttk import Frame, Button
from idlelib.pyshell import PyShellFileList

top = Toplevel(parent)
top.title("Test GrepDialog")
x, y = map(int, parent.geometry().split('+')[1:])
top.geometry(f"+{x}+{y + 175}")

flist = PyShellFileList(top)
text = Text(top, height=5)
frame = Frame(top)
frame.pack()
text = Text(frame, height=5)
text.pack()

def show_grep_dialog():
text.tag_add(SEL, "1.0", END)
grep(text, flist=flist)
text.tag_remove(SEL, "1.0", END)

button = Button(top, text="Show GrepDialog", command=show_grep_dialog)
button = Button(frame, text="Show GrepDialog", command=show_grep_dialog)
button.pack()

if __name__ == "__main__":
Expand Down
8 changes: 5 additions & 3 deletions Lib/idlelib/idle_test/test_searchbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

import unittest
from test.support import requires
from tkinter import Tk, Frame ##, BooleanVar, StringVar
from tkinter import Tk
from tkinter.ttk import Frame
from idlelib import searchengine as se
from idlelib import searchbase as sdb
from idlelib.idle_test.mock_idle import Func
Expand Down Expand Up @@ -97,11 +98,12 @@ def test_make_frame(self):
self.dialog.top = self.root
frame, label = self.dialog.make_frame()
self.assertEqual(label, '')
self.assertIsInstance(frame, Frame)
self.assertEqual(str(type(frame)), "<class 'tkinter.ttk.Frame'>")
# self.assertIsInstance(frame, Frame) fails when test is run by
# test_idle not run from IDLE editor. See issue 33987 PR.

frame, label = self.dialog.make_frame('testlabel')
self.assertEqual(label['text'], 'testlabel')
self.assertIsInstance(frame, Frame)

def btn_test_setup(self, meth):
self.dialog.top = self.root
Expand Down
1 change: 0 additions & 1 deletion Lib/idlelib/query.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""
Dialogs that query users and verify the answer before accepting.
Use ttk widgets, limiting use to tcl/tk 8.5+, as in IDLE 3.6+.
Query is the generic base class for a popup dialog.
The user must either enter a valid answer or close the dialog.
Expand Down
14 changes: 8 additions & 6 deletions Lib/idlelib/replace.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,12 +205,12 @@ def close(self, event=None):

def _replace_dialog(parent): # htest #
from tkinter import Toplevel, Text, END, SEL
from tkinter.ttk import Button
from tkinter.ttk import Frame, Button

box = Toplevel(parent)
box.title("Test ReplaceDialog")
top = Toplevel(parent)
top.title("Test ReplaceDialog")
x, y = map(int, parent.geometry().split('+')[1:])
box.geometry("+%d+%d" % (x, y + 175))
top.geometry("+%d+%d" % (x, y + 175))

# mock undo delegator methods
def undo_block_start():
Expand All @@ -219,7 +219,9 @@ def undo_block_start():
def undo_block_stop():
pass

text = Text(box, inactiveselectbackground='gray')
frame = Frame(top)
frame.pack()
text = Text(frame, inactiveselectbackground='gray')
text.undo_block_start = undo_block_start
text.undo_block_stop = undo_block_stop
text.pack()
Expand All @@ -231,7 +233,7 @@ def show_replace():
replace(text)
text.tag_remove(SEL, "1.0", END)

button = Button(box, text="Replace", command=show_replace)
button = Button(frame, text="Replace", command=show_replace)
button.pack()

if __name__ == '__main__':
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/scrolledlist.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from tkinter import *
from tkinter.ttk import Scrollbar
from tkinter.ttk import Frame, Scrollbar

from idlelib import macosx

Expand Down
15 changes: 9 additions & 6 deletions Lib/idlelib/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,16 @@ def find_selection(self, text):
def _search_dialog(parent): # htest #
"Display search test box."
from tkinter import Toplevel, Text
from tkinter.ttk import Button
from tkinter.ttk import Frame, Button

box = Toplevel(parent)
box.title("Test SearchDialog")
top = Toplevel(parent)
top.title("Test SearchDialog")
x, y = map(int, parent.geometry().split('+')[1:])
box.geometry("+%d+%d" % (x, y + 175))
text = Text(box, inactiveselectbackground='gray')
top.geometry("+%d+%d" % (x, y + 175))

frame = Frame(top)
frame.pack()
text = Text(frame, inactiveselectbackground='gray')
text.pack()
text.insert("insert","This is a sample string.\n"*5)

Expand All @@ -90,7 +93,7 @@ def show_find():
_setup(text).open(text)
text.tag_remove('sel', '1.0', 'end')

button = Button(box, text="Search (selection ignored)", command=show_find)
button = Button(frame, text="Search (selection ignored)", command=show_find)
button.pack()

if __name__ == '__main__':
Expand Down
4 changes: 2 additions & 2 deletions Lib/idlelib/searchbase.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'''Define SearchDialogBase used by Search, Replace, and Grep dialogs.'''

from tkinter import Toplevel, Frame
from tkinter.ttk import Entry, Label, Button, Checkbutton, Radiobutton
from tkinter import Toplevel
from tkinter.ttk import Frame, Entry, Label, Button, Checkbutton, Radiobutton


class SearchDialogBase:
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import os

from tkinter import *
from tkinter.ttk import Scrollbar
from tkinter.ttk import Frame, Scrollbar

from idlelib.config import idleConf
from idlelib import zoomheight
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Use ttk Frame for ttk widgets.

0 comments on commit b364caa

Please sign in to comment.