"""
An auto-completion window for IDLE, used by the AutoComplete extension
"""
-from Tkinter import *
+from tkinter import *
from idlelib.MultiCall import MC_SHIFT
from idlelib.AutoComplete import COMPLETE_FILES, COMPLETE_ATTRIBUTES
Used by the CallTips IDLE extension.
"""
-from Tkinter import *
+from tkinter import *
HIDE_VIRTUAL_EVENT_NAME = "<<calltipwindow-hide>>"
HIDE_SEQUENCES = ("<Key-Escape>", "<FocusOut>")
not open blocks are not shown in the context hints pane.
"""
-import Tkinter
-from Tkconstants import TOP, LEFT, X, W, SUNKEN
+import tkinter
+from tkinter.constants import TOP, LEFT, X, W, SUNKEN
import re
from sys import maxsize as INFINITY
from idlelib.configHandler import idleConf
border = 0
for widget in widgets:
border += int(str( widget.cget('border') ))
- self.label = Tkinter.Label(self.editwin.top,
+ self.label = tkinter.Label(self.editwin.top,
text="\n" * (self.context_depth - 1),
anchor=W, justify=LEFT,
font=self.textfont,
import re
import keyword
import builtins
-from Tkinter import *
+from tkinter import *
from idlelib.Delegator import Delegator
from idlelib.configHandler import idleConf
import os
import bdb
import types
-from Tkinter import *
+from tkinter import *
from idlelib.WindowList import ListedToplevel
from idlelib.ScrolledList import ScrolledList
from idlelib import macosxSupport
import string
import imp
from itertools import count
-from Tkinter import *
-import tkSimpleDialog
-import tkMessageBox
+from tkinter import *
+import tkinter.simpledialog as tkSimpleDialog
+import tkinter.messagebox as tkMessageBox
import traceback
import webbrowser
import os
-from Tkinter import *
-import tkMessageBox
+from tkinter import *
+import tkinter.messagebox as tkMessageBox
class FileList:
import os
import fnmatch
import sys
-from Tkinter import *
+from tkinter import *
from idlelib import SearchEngine
from idlelib.SearchDialogBase import SearchDialogBase
import sys
import codecs
import tempfile
-import tkFileDialog
-import tkMessageBox
+import tkinter.filedialog as tkFileDialog
+import tkinter.messagebox as tkMessageBox
import re
-from Tkinter import *
-from SimpleDialog import SimpleDialog
+from tkinter import *
+from tkinter.simpledialog import SimpleDialog
from idlelib.configHandler import idleConf
import sys
import re
-import Tkinter
+import tkinter
# the event type constants, which define the meaning of mc_type
MC_KEYPRESS=0; MC_KEYRELEASE=1; MC_BUTTONPRESS=2; MC_BUTTONRELEASE=3;
return _multicall_dict[widget]
class MultiCall (widget):
- assert issubclass(widget, Tkinter.Misc)
+ assert issubclass(widget, tkinter.Misc)
def __init__(self, *args, **kwargs):
widget.__init__(self, *args, **kwargs)
if __name__ == "__main__":
# Test
- root = Tkinter.Tk()
- text = MultiCallCreator(Tkinter.Text)(root)
+ root = tkinter.Tk()
+ text = MultiCallCreator(tkinter.Text)(root)
text.pack()
def bindseq(seq, n=[0]):
def handler(event):
-from Tkinter import *
+from tkinter import *
class MultiStatusBar(Frame):
def _test():
import sys
- from Tkinter import Tk
+ from tkinter import Tk
root = Tk()
root.configure(bd=0, bg="yellow")
root.focus_set()
-from Tkinter import *
+from tkinter import *
from idlelib.EditorWindow import EditorWindow
import re
-import tkMessageBox
+import tkinter.messagebox as tkMessageBox
from idlelib import IOBinding
class OutputWindow(EditorWindow):
filter.setdelegate(None)
def main():
- import Tkinter as Tk
+ import tkinter as Tk
class Tracer(Delegator):
def __init__(self, name):
self.name = name
from code import InteractiveInterpreter
try:
- from Tkinter import *
+ from tkinter import *
except ImportError:
print("** IDLE can't import Tkinter. " \
"Your Python may not be configured for Tk. **", file=sys.__stderr__)
sys.exit(1)
-import tkMessageBox
+import tkinter.messagebox as tkMessageBox
from idlelib.EditorWindow import EditorWindow, fixwordbreaks
from idlelib.FileList import FileList
(sys.version, sys.platform, self.COPYRIGHT,
self.firewallmessage, idlever.IDLE_VERSION, nosub))
self.showprompt()
- import Tkinter
- Tkinter._default_root = None # 03Jan04 KBK What's this?
+ import tkinter
+ tkinter._default_root = None # 03Jan04 KBK What's this?
return True
def readline(self):
-from Tkinter import *
+from tkinter import *
from idlelib import SearchEngine
from idlelib.SearchDialogBase import SearchDialogBase
import string
import tabnanny
import tokenize
-import tkMessageBox
+import tkinter.messagebox as tkMessageBox
from idlelib.EditorWindow import EditorWindow
from idlelib import PyShell
-from Tkinter import *
+from tkinter import *
class ScrolledList:
-from Tkinter import *
+from tkinter import *
from idlelib import SearchEngine
from idlelib.SearchDialogBase import SearchDialogBase
-from Tkinter import *
+from tkinter import *
class SearchDialogBase:
import re
-from Tkinter import *
-import tkMessageBox
+from tkinter import *
+import tkinter.messagebox as tkMessageBox
def get(root):
if not hasattr(root, "_searchengine"):
def StackBrowser(root, flist=None, tb=None, top=None):
if top is None:
- from Tkinter import Toplevel
+ from tkinter import Toplevel
top = Toplevel(root)
sc = ScrolledCanvas(top, bg="white", highlightthickness=0)
sc.frame.pack(expand=1, fill="both")
# may be useful for some purposes in (or almost in ;) the current project scope
# Ideas gleaned from PySol
-from Tkinter import *
+from tkinter import *
class ToolTipBase:
# - optimize tree redraw after expand of subnode
import os
-from Tkinter import *
+from tkinter import *
import imp
from idlelib import ZoomHeight
import string
-from Tkinter import *
+from tkinter import *
from idlelib.Delegator import Delegator
-from Tkinter import *
+from tkinter import *
class WidgetRedirector:
-from Tkinter import *
+from tkinter import *
class WindowList:
"""
-from Tkinter import *
+from tkinter import *
import os
from idlelib import textView
Refer to comments in EditorWindow autoindent code for details.
"""
-from Tkinter import *
-import tkMessageBox, tkColorChooser, tkFont
+from tkinter import *
+import tkinter.messagebox as tkMessageBox
+import tkinter.colorchooser as tkColorChooser
+import tkinter.font as tkFont
import copy
from idlelib.configHandler import idleConf
import os
import sys
-from Tkinter import *
-import tkMessageBox
-import tkFileDialog
+from tkinter import *
+import tkinter.messagebox as tkMessageBox
+import tkinter.filedialog as tkFileDialog
class GetHelpSourceDialog(Toplevel):
def __init__(self, parent, title, menuItem='', filePath=''):
Dialog that allows user to specify a new config file section name.
Used to get new highlight theme and keybinding set names.
"""
-from Tkinter import *
-import tkMessageBox
+from tkinter import *
+import tkinter.messagebox as tkMessageBox
class GetCfgSectionNameDialog(Toplevel):
def __init__(self,parent,title,message,usedNames):
OptionMenu widget modified to allow dynamic menu reconfiguration
and setting of highlightthickness
"""
-from Tkinter import OptionMenu
-from Tkinter import _setit
+from tkinter import OptionMenu
+from tkinter import _setit
import copy
class DynOptionMenu(OptionMenu):
"""
Dialog for building Tkinter accelerator key bindings
"""
-from Tkinter import *
-import tkMessageBox
+from tkinter import *
+import tkinter.messagebox as tkMessageBox
import string
class GetKeysDialog(Toplevel):
GUI application (as opposed to an X11 application).
"""
import sys
-import Tkinter
+import tkinter
def runningAsOSXApp():
""" Returns True iff running from the IDLE.app bundle on OSX """
def hideTkConsole(root):
try:
root.tk.call('console', 'hide')
- except Tkinter.TclError:
+ except tkinter.TclError:
# Some versions of the Tk framework don't have a console object
pass
#
# Due to a (mis-)feature of TkAqua the user will also see an empty Help
# menu.
- from Tkinter import Menu, Text, Text
+ from tkinter import Menu, Text, Text
from idlelib.EditorWindow import prepstr, get_accelerator
from idlelib import Bindings
from idlelib import WindowList
server.handle_request() # A single request only
def show_socket_error(err, address):
- import Tkinter
- import tkMessageBox
- root = Tkinter.Tk()
+ import tkinter
+ import tkinter.messagebox as tkMessageBox
+ root = tkinter.Tk()
root.withdraw()
if err.args[0] == 61: # connection refused
msg = "IDLE's subprocess can't connect to %s:%d. This may be due "\
TabSet -- A widget containing tabs (buttons) in one or more rows.
"""
-from Tkinter import *
+from tkinter import *
class InvalidNameError(Exception): pass
class AlreadyExistsError(Exception): pass
"""
-from Tkinter import *
-import tkMessageBox
+from tkinter import *
+import tkinter.messagebox as tkMessageBox
class TextViewer(Toplevel):
"""A simple text viewer dialog for IDLE
else:
textFile = open(filename, 'r')
except IOError:
- import tkMessageBox
+ import tkinter.messagebox as tkMessageBox
tkMessageBox.showerror(title='File Load Error',
message='Unable to load file %r .' % filename,
parent=parent)
self.server = None
self.scanner = None
- import Tkinter
- self.server_frm = Tkinter.Frame(window)
- self.title_lbl = Tkinter.Label(self.server_frm,
+ import tkinter
+ self.server_frm = tkinter.Frame(window)
+ self.title_lbl = tkinter.Label(self.server_frm,
text='Starting server...\n ')
- self.open_btn = Tkinter.Button(self.server_frm,
+ self.open_btn = tkinter.Button(self.server_frm,
text='open browser', command=self.open, state='disabled')
- self.quit_btn = Tkinter.Button(self.server_frm,
+ self.quit_btn = tkinter.Button(self.server_frm,
text='quit serving', command=self.quit, state='disabled')
- self.search_frm = Tkinter.Frame(window)
- self.search_lbl = Tkinter.Label(self.search_frm, text='Search for')
- self.search_ent = Tkinter.Entry(self.search_frm)
+ self.search_frm = tkinter.Frame(window)
+ self.search_lbl = tkinter.Label(self.search_frm, text='Search for')
+ self.search_ent = tkinter.Entry(self.search_frm)
self.search_ent.bind('<Return>', self.search)
- self.stop_btn = Tkinter.Button(self.search_frm,
+ self.stop_btn = tkinter.Button(self.search_frm,
text='stop', pady=0, command=self.stop, state='disabled')
if sys.platform == 'win32':
# Trying to hide and show this button crashes under Windows.
self.search_ent.focus_set()
font = ('helvetica', sys.platform == 'win32' and 8 or 10)
- self.result_lst = Tkinter.Listbox(window, font=font, height=6)
+ self.result_lst = tkinter.Listbox(window, font=font, height=6)
self.result_lst.bind('<Button-1>', self.select)
self.result_lst.bind('<Double-Button-1>', self.goto)
- self.result_scr = Tkinter.Scrollbar(window,
+ self.result_scr = tkinter.Scrollbar(window,
orient='vertical', command=self.result_lst.yview)
self.result_lst.config(yscrollcommand=self.result_scr.set)
- self.result_frm = Tkinter.Frame(window)
- self.goto_btn = Tkinter.Button(self.result_frm,
+ self.result_frm = tkinter.Frame(window)
+ self.goto_btn = tkinter.Button(self.result_frm,
text='go to selected', command=self.goto)
- self.hide_btn = Tkinter.Button(self.result_frm,
+ self.hide_btn = tkinter.Button(self.result_frm,
text='hide results', command=self.hide)
self.goto_btn.pack(side='left', fill='x', expand=1)
self.hide_btn.pack(side='right', fill='x', expand=1)
self.stop()
self.collapse()
- import Tkinter
+ import tkinter
try:
- root = Tkinter.Tk()
+ root = tkinter.Tk()
# Tk will crash if pythonw.exe has an XP .manifest
# file and the root has is not destroyed explicitly.
# If the problem is ever fixed in Tk, the explicit
command) or with the method bind.
Example (Hello, World):
-import Tkinter
-from Tkconstants import *
-tk = Tkinter.Tk()
-frame = Tkinter.Frame(tk, relief=RIDGE, borderwidth=2)
+import tkinter
+from tkinter.constants import *
+tk = tkinter.Tk()
+frame = tkinter.Frame(tk, relief=RIDGE, borderwidth=2)
frame.pack(fill=BOTH,expand=1)
-label = Tkinter.Label(frame, text="Hello, World")
+label = tkinter.Label(frame, text="Hello, World")
label.pack(fill=X, expand=1)
-button = Tkinter.Button(frame,text="Exit",command=tk.destroy)
+button = tkinter.Button(frame,text="Exit",command=tk.destroy)
button.pack(side=BOTTOM)
tk.mainloop()
"""
import sys
if sys.platform == "win32":
- import FixTk # Attempt to configure Tcl/Tk without requiring PATH
+ # Attempt to configure Tcl/Tk without requiring PATH
+ from tkinter import _fix
import _tkinter # If this fails your Python may not be configured for Tk
-tkinter = _tkinter # b/w compat for export
TclError = _tkinter.TclError
-from Tkconstants import *
+from tkinter.constants import *
try:
import MacOS; _MacOS = MacOS; del MacOS
except ImportError:
base_tcl = os.path.join(home, '.%s.tcl' % baseName)
base_py = os.path.join(home, '.%s.py' % baseName)
dir = {'self': self}
- exec('from Tkinter import *', dir)
+ exec('from tkinter import *', dir)
if os.path.isfile(class_tcl):
self.tk.call('source', class_tcl)
if os.path.isfile(class_py):
# - title: dialog title
#
-from tkCommonDialog import Dialog
+from tkinter.commondialog import Dialog
#
# base class for tk common dialogues
#
# this module provides a base class for accessing the common
-# dialogues available in Tk 4.2 and newer. use tkFileDialog,
-# tkColorChooser, and tkMessageBox to access the individual
+# dialogues available in Tk 4.2 and newer. use filedialog,
+# colorchooser, and messagebox to access the individual
# dialogs.
#
# written by Fredrik Lundh, May 1997
#
-from Tkinter import *
+from tkinter import *
class Dialog:
-# Dialog.py -- Tkinter interface to the tk_dialog script.
+# dialog.py -- Tkinter interface to the tk_dialog script.
-from Tkinter import *
-from Tkinter import _cnfmerge
+from tkinter import *
+from tkinter import _cnfmerge
if TkVersion <= 3.6:
DIALOG_ICON = 'warning'
"""
-import Tkinter
+import tkinter
# The factory function
self.detach()
if not canvas:
return
- label = Tkinter.Label(canvas, text=self.name,
+ label = tkinter.Label(canvas, text=self.name,
borderwidth=2, relief="raised")
id = canvas.create_window(x, y, window=label, anchor="nw")
self.canvas = canvas
class Tester:
def __init__(self, root):
- self.top = Tkinter.Toplevel(root)
- self.canvas = Tkinter.Canvas(self.top, width=100, height=100)
+ self.top = tkinter.Toplevel(root)
+ self.canvas = tkinter.Canvas(self.top, width=100, height=100)
self.canvas.pack(fill="both", expand=1)
self.canvas.dnd_accept = self.dnd_accept
source.attach(self.canvas, x, y)
def test():
- root = Tkinter.Tk()
+ root = tkinter.Tk()
root.geometry("+1+1")
- Tkinter.Button(command=root.quit, text="Quit").pack()
+ tkinter.Button(command=root.quit, text="Quit").pack()
t1 = Tester(root)
t1.top.geometry("+1+60")
t2 = Tester(root)
"""
-from Tkinter import *
-from Dialog import Dialog
+from tkinter import *
+from tkinter.dialog import Dialog
import os
import fnmatch
__version__ = "0.9"
-import Tkinter
+import tkinter
# weight/slant
NORMAL = "normal"
def __init__(self, root=None, font=None, name=None, exists=False, **options):
if not root:
- root = Tkinter._default_root
+ root = tkinter._default_root
if font:
# get actual settings corresponding to the given font
font = root.tk.splitlist(root.tk.call("font", "actual", font))
self.delete_font = False
# confirm font exists
if self.name not in root.tk.call("font", "names"):
- raise Tkinter._tkinter.TclError("named font %s does not already exist" % (self.name,))
+ raise tkinter._tkinter.TclError(
+ "named font %s does not already exist" % (self.name,))
# if font config info supplied, apply it
if font:
root.tk.call("font", "configure", self.name, *font)
def families(root=None):
"Get font families (as a tuple)"
if not root:
- root = Tkinter._default_root
+ root = tkinter._default_root
return root.tk.splitlist(root.tk.call("font", "families"))
def names(root=None):
"Get names of defined fonts (as a tuple)"
if not root:
- root = Tkinter._default_root
+ root = tkinter._default_root
return root.tk.splitlist(root.tk.call("font", "names"))
# --------------------------------------------------------------------
if __name__ == "__main__":
- root = Tkinter.Tk()
+ root = tkinter.Tk()
# create a font
f = Font(family="times", size=30, weight=NORMAL)
f = Font(font=("Courier", 20, "bold"))
print(f.measure("hello"), f.metrics("linespace"))
- w = Tkinter.Label(root, text="Hello, world", font=f)
+ w = tkinter.Label(root, text="Hello, world", font=f)
w.pack()
- w = Tkinter.Button(root, text="Quit!", command=root.destroy)
+ w = tkinter.Button(root, text="Quit!", command=root.destroy)
w.pack()
fb = Font(font=w["font"]).copy()
w.config(font=fb)
- Tkinter.mainloop()
+ tkinter.mainloop()
# - type: dialog type; that is, which buttons to display (see below)
#
-from tkCommonDialog import Dialog
+from tkinter.commondialog import Dialog
#
# constants
# Most methods calls are inherited from the Text widget; Pack methods
# are redirected to the Frame widget however.
-from Tkinter import *
-from Tkinter import _cnfmerge
+from tkinter import *
+from tkinter import _cnfmerge
class ScrolledText(Text):
def __init__(self, master=None, cnf=None, **kw):
"""A simple but flexible modal dialog box."""
-from Tkinter import *
+from tkinter import *
class SimpleDialog:
# appreciate the advantages.
#
-from Tkinter import *
-from Tkinter import _flatten, _cnfmerge, _default_root
+from tkinter import *
+from tkinter import _flatten, _cnfmerge, _default_root
# WARNING - TkVersion is a limited precision floating point number
if TkVersion < 3.999:
# BEWARE - this is implemented by copying some code from the Widget class
# in Tkinter (to override Widget initialization) and is therefore
# liable to break.
-import Tkinter, os
+import tkinter, os
# Could probably add this to Tkinter.Misc
class tixCommand:
else:
return self.tk.call('tix', 'resetoptions', newScheme, newFontSet)
-class Tk(Tkinter.Tk, tixCommand):
+class Tk(tkinter.Tk, tixCommand):
"""Toplevel widget of Tix which represents mostly the main window
of an application. It has an associated Tcl interpreter."""
def __init__(self, screenName=None, baseName=None, className='Tix'):
- Tkinter.Tk.__init__(self, screenName, baseName, className)
+ tkinter.Tk.__init__(self, screenName, baseName, className)
tixlib = os.environ.get('TIX_LIBRARY')
self.tk.eval('global auto_path; lappend auto_path [file dir [info nameof]]')
if tixlib is not None:
def destroy(self):
# For safety, remove an delete_window binding before destroy
self.protocol("WM_DELETE_WINDOW", "")
- Tkinter.Tk.destroy(self)
+ tkinter.Tk.destroy(self)
# The Tix 'tixForm' geometry manager
class Form:
-Tkinter.Widget.__bases__ = Tkinter.Widget.__bases__ + (Form,)
+tkinter.Widget.__bases__ = tkinter.Widget.__bases__ + (Form,)
-class TixWidget(Tkinter.Widget):
+class TixWidget(tkinter.Widget):
"""A TixWidget class is used to package all (or most) Tix widgets.
Widget initialization is extended in two ways:
# These are missing from Tkinter
def image_create(self, imgtype, cnf={}, master=None, **kw):
if not master:
- master = Tkinter._default_root
+ master = tkinter._default_root
if not master:
raise RuntimeError('Too early to create image')
if kw and cnf: cnf = _cnfmerge((cnf, kw))
from math import * # Also for export
from time import sleep
-import Tkinter
+import tkinter
speeds = ['fastest', 'fast', 'normal', 'slow', 'slowest']
# Test the color first
try:
id = self._canvas.create_line(0, 0, 0, 0, fill=color)
- except Tkinter.TclError:
+ except tkinter.TclError:
raise Error("bad color string: %r" % (color,))
self._set_color(color)
return
# in case nhops==0
self._canvas.coords(item, x0, y0, x1, y1)
self._canvas.itemconfigure(item, arrow="none")
- except Tkinter.TclError:
+ except tkinter.TclError:
# Probably the window was closed!
return
else:
def __init__(self):
global _root, _canvas
if _root is None:
- _root = Tkinter.Tk()
+ _root = tkinter.Tk()
_root.wm_protocol("WM_DELETE_WINDOW", self._destroy)
_root.title(_title)
if _canvas is None:
# XXX Should have scroll bars
- _canvas = Tkinter.Canvas(_root, background="white")
+ _canvas = tkinter.Canvas(_root, background="white")
_canvas.pack(expand=1, fill="both")
setup(width=_width, height= _height, startx=_startx, starty=_starty)