Commit aff0adab authored by Terry Jan Reedy's avatar Terry Jan Reedy Committed by GitHub

bpo-33987: IDLE - use ttk Frame for ttk widgets (GH-11395)

parent e9a044ec
......@@ -4,7 +4,7 @@ An auto-completion window for IDLE, used by the autocomplete extension
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
......
......@@ -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
......
......@@ -14,7 +14,7 @@ from tkinter import (Toplevel, Listbox, Text, Scale, Canvas,
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
......
......@@ -2,7 +2,7 @@ import bdb
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
......
......@@ -8,7 +8,7 @@ import os
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
......@@ -173,15 +173,18 @@ class GrepDialog(SearchDialogBase):
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():
......@@ -189,7 +192,7 @@ def _grep_dialog(parent): # htest #
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__":
......
......@@ -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
......@@ -97,11 +98,12 @@ class SearchDialogBaseTest(unittest.TestCase):
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
......
"""
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.
......
......@@ -205,12 +205,12 @@ class ReplaceDialog(SearchDialogBase):
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():
......@@ -219,7 +219,9 @@ def _replace_dialog(parent): # htest #
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()
......@@ -231,7 +233,7 @@ def _replace_dialog(parent): # htest #
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__':
......
from tkinter import *
from tkinter.ttk import Scrollbar
from tkinter.ttk import Frame, Scrollbar
from idlelib import macosx
......
......@@ -75,13 +75,16 @@ class SearchDialog(SearchDialogBase):
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)
......@@ -90,7 +93,7 @@ def _search_dialog(parent): # htest #
_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__':
......
'''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:
......
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment