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
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
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
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
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
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():
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__":
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
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.
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():
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()
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
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)
_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:
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
--- /dev/null
+Use ttk Frame for ttk widgets.