diff --git a/Lib/lib-tk/Canvas.py b/Lib/lib-tk/Canvas.py index e8b33658011..ced84a91e70 100644 --- a/Lib/lib-tk/Canvas.py +++ b/Lib/lib-tk/Canvas.py @@ -7,182 +7,182 @@ from Tkinter import Canvas, _cnfmerge, _flatten class CanvasItem: - def __init__(self, canvas, itemType, *args, **kw): - self.canvas = canvas - self.id = canvas._create(itemType, args, kw) - if not hasattr(canvas, 'items'): - canvas.items = {} - canvas.items[self.id] = self - def __str__(self): - return str(self.id) - def __repr__(self): - return '<%s, id=%d>' % (self.__class__.__name__, self.id) - def delete(self): - del self.canvas.items[self.id] - self.canvas.delete(self.id) - def __getitem__(self, key): - v = self.canvas.tk.split(self.canvas.tk.call( - self.canvas._w, 'itemconfigure', - self.id, '-' + key)) - return v[4] - cget = __getitem__ - def __setitem__(self, key, value): - self.canvas.itemconfig(self.id, {key: value}) - def keys(self): - if not hasattr(self, '_keys'): - self._keys = map(lambda x, tk=self.canvas.tk: - tk.splitlist(x)[0][1:], - self.canvas.tk.splitlist( - self.canvas._do( - 'itemconfigure', - (self.id,)))) - return self._keys - def has_key(self, key): - return key in self.keys() - def addtag(self, tag, option='withtag'): - self.canvas.addtag(tag, option, self.id) - def bbox(self): - x1, y1, x2, y2 = self.canvas.bbox(self.id) - return (x1, y1), (x2, y2) - def bind(self, sequence=None, command=None, add=None): - return self.canvas.tag_bind(self.id, sequence, command, add) - def unbind(self, sequence, funcid=None): - self.canvas.tag_unbind(self.id, sequence, funcid) - def config(self, cnf={}, **kw): - return self.canvas.itemconfig(self.id, _cnfmerge((cnf, kw))) - def coords(self, pts = ()): - flat = () - for x, y in pts: flat = flat + (x, y) - return apply(self.canvas.coords, (self.id,) + flat) - def dchars(self, first, last=None): - self.canvas.dchars(self.id, first, last) - def dtag(self, ttd): - self.canvas.dtag(self.id, ttd) - def focus(self): - self.canvas.focus(self.id) - def gettags(self): - return self.canvas.gettags(self.id) - def icursor(self, index): - self.canvas.icursor(self.id, index) - def index(self, index): - return self.canvas.index(self.id, index) - def insert(self, beforethis, string): - self.canvas.insert(self.id, beforethis, string) - def lower(self, belowthis=None): - self.canvas.tag_lower(self.id, belowthis) - def move(self, xamount, yamount): - self.canvas.move(self.id, xamount, yamount) - def tkraise(self, abovethis=None): - self.canvas.tag_raise(self.id, abovethis) - raise_ = tkraise # BW compat - def scale(self, xorigin, yorigin, xscale, yscale): - self.canvas.scale(self.id, xorigin, yorigin, xscale, yscale) - def type(self): - return self.canvas.type(self.id) + def __init__(self, canvas, itemType, *args, **kw): + self.canvas = canvas + self.id = canvas._create(itemType, args, kw) + if not hasattr(canvas, 'items'): + canvas.items = {} + canvas.items[self.id] = self + def __str__(self): + return str(self.id) + def __repr__(self): + return '<%s, id=%d>' % (self.__class__.__name__, self.id) + def delete(self): + del self.canvas.items[self.id] + self.canvas.delete(self.id) + def __getitem__(self, key): + v = self.canvas.tk.split(self.canvas.tk.call( + self.canvas._w, 'itemconfigure', + self.id, '-' + key)) + return v[4] + cget = __getitem__ + def __setitem__(self, key, value): + self.canvas.itemconfig(self.id, {key: value}) + def keys(self): + if not hasattr(self, '_keys'): + self._keys = map(lambda x, tk=self.canvas.tk: + tk.splitlist(x)[0][1:], + self.canvas.tk.splitlist( + self.canvas._do( + 'itemconfigure', + (self.id,)))) + return self._keys + def has_key(self, key): + return key in self.keys() + def addtag(self, tag, option='withtag'): + self.canvas.addtag(tag, option, self.id) + def bbox(self): + x1, y1, x2, y2 = self.canvas.bbox(self.id) + return (x1, y1), (x2, y2) + def bind(self, sequence=None, command=None, add=None): + return self.canvas.tag_bind(self.id, sequence, command, add) + def unbind(self, sequence, funcid=None): + self.canvas.tag_unbind(self.id, sequence, funcid) + def config(self, cnf={}, **kw): + return self.canvas.itemconfig(self.id, _cnfmerge((cnf, kw))) + def coords(self, pts = ()): + flat = () + for x, y in pts: flat = flat + (x, y) + return apply(self.canvas.coords, (self.id,) + flat) + def dchars(self, first, last=None): + self.canvas.dchars(self.id, first, last) + def dtag(self, ttd): + self.canvas.dtag(self.id, ttd) + def focus(self): + self.canvas.focus(self.id) + def gettags(self): + return self.canvas.gettags(self.id) + def icursor(self, index): + self.canvas.icursor(self.id, index) + def index(self, index): + return self.canvas.index(self.id, index) + def insert(self, beforethis, string): + self.canvas.insert(self.id, beforethis, string) + def lower(self, belowthis=None): + self.canvas.tag_lower(self.id, belowthis) + def move(self, xamount, yamount): + self.canvas.move(self.id, xamount, yamount) + def tkraise(self, abovethis=None): + self.canvas.tag_raise(self.id, abovethis) + raise_ = tkraise # BW compat + def scale(self, xorigin, yorigin, xscale, yscale): + self.canvas.scale(self.id, xorigin, yorigin, xscale, yscale) + def type(self): + return self.canvas.type(self.id) class Arc(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'arc') + args, kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'arc') + args, kw) class Bitmap(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'bitmap') + args, kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'bitmap') + args, kw) class ImageItem(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'image') + args, kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'image') + args, kw) class Line(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'line') + args, kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'line') + args, kw) class Oval(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'oval') + args, kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'oval') + args, kw) class Polygon(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'polygon') + args,kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'polygon') + args,kw) class Rectangle(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'rectangle')+args,kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'rectangle')+args,kw) # XXX "Text" is taken by the Text widget... class CanvasText(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'text') + args, kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'text') + args, kw) class Window(CanvasItem): - def __init__(self, canvas, *args, **kw): - apply(CanvasItem.__init__, (self, canvas, 'window') + args, kw) + def __init__(self, canvas, *args, **kw): + apply(CanvasItem.__init__, (self, canvas, 'window') + args, kw) class Group: - def __init__(self, canvas, tag=None): - if not tag: - tag = 'Group%d' % id(self) - self.tag = self.id = tag - self.canvas = canvas - self.canvas.dtag(self.tag) - def str(self): - return self.tag - __str__ = str - def _do(self, cmd, *args): - return self.canvas._do(cmd, (self.tag,) + _flatten(args)) - def addtag_above(self, tagOrId): - self._do('addtag', 'above', tagOrId) - def addtag_all(self): - self._do('addtag', 'all') - def addtag_below(self, tagOrId): - self._do('addtag', 'below', tagOrId) - def addtag_closest(self, x, y, halo=None, start=None): - self._do('addtag', 'closest', x, y, halo, start) - def addtag_enclosed(self, x1, y1, x2, y2): - self._do('addtag', 'enclosed', x1, y1, x2, y2) - def addtag_overlapping(self, x1, y1, x2, y2): - self._do('addtag', 'overlapping', x1, y1, x2, y2) - def addtag_withtag(self, tagOrId): - self._do('addtag', 'withtag', tagOrId) - def bbox(self): - return self.canvas._getints(self._do('bbox')) - def bind(self, sequence=None, command=None, add=None): - return self.canvas.tag_bind(self.id, sequence, command, add) - def unbind(self, sequence, funcid=None): - self.canvas.tag_unbind(self.id, sequence, funcid) - def coords(self, *pts): - return self._do('coords', pts) - def dchars(self, first, last=None): - self._do('dchars', first, last) - def delete(self): - self._do('delete') - def dtag(self, tagToDelete=None): - self._do('dtag', tagToDelete) - def focus(self): - self._do('focus') - def gettags(self): - return self.canvas.tk.splitlist(self._do('gettags', self.tag)) - def icursor(self, index): - return self._do('icursor', index) - def index(self, index): - return self.canvas.tk.getint(self._do('index', index)) - def insert(self, beforeThis, string): - self._do('insert', beforeThis, string) - def config(self, cnf={}, **kw): - return self.canvas.itemconfigure(self.tag, _cnfmerge((cnf,kw))) - def lower(self, belowThis=None): - self._do('tag_lower', belowThis) - def move(self, xAmount, yAmount): - self._do('move', xAmount, yAmount) - def tkraise(self, aboveThis=None): - self._do('tag_raise', aboveThis) - lift = tkraise - def scale(self, xOrigin, yOrigin, xScale, yScale): - self._do('scale', xOrigin, yOrigin, xScale, yScale) - def select_adjust(self, index): - self.canvas._do('select', ('adjust', self.tag, index)) - def select_from(self, index): - self.canvas._do('select', ('from', self.tag, index)) - def select_to(self, index): - self.canvas._do('select', ('to', self.tag, index)) - def type(self): - return self._do('type') + def __init__(self, canvas, tag=None): + if not tag: + tag = 'Group%d' % id(self) + self.tag = self.id = tag + self.canvas = canvas + self.canvas.dtag(self.tag) + def str(self): + return self.tag + __str__ = str + def _do(self, cmd, *args): + return self.canvas._do(cmd, (self.tag,) + _flatten(args)) + def addtag_above(self, tagOrId): + self._do('addtag', 'above', tagOrId) + def addtag_all(self): + self._do('addtag', 'all') + def addtag_below(self, tagOrId): + self._do('addtag', 'below', tagOrId) + def addtag_closest(self, x, y, halo=None, start=None): + self._do('addtag', 'closest', x, y, halo, start) + def addtag_enclosed(self, x1, y1, x2, y2): + self._do('addtag', 'enclosed', x1, y1, x2, y2) + def addtag_overlapping(self, x1, y1, x2, y2): + self._do('addtag', 'overlapping', x1, y1, x2, y2) + def addtag_withtag(self, tagOrId): + self._do('addtag', 'withtag', tagOrId) + def bbox(self): + return self.canvas._getints(self._do('bbox')) + def bind(self, sequence=None, command=None, add=None): + return self.canvas.tag_bind(self.id, sequence, command, add) + def unbind(self, sequence, funcid=None): + self.canvas.tag_unbind(self.id, sequence, funcid) + def coords(self, *pts): + return self._do('coords', pts) + def dchars(self, first, last=None): + self._do('dchars', first, last) + def delete(self): + self._do('delete') + def dtag(self, tagToDelete=None): + self._do('dtag', tagToDelete) + def focus(self): + self._do('focus') + def gettags(self): + return self.canvas.tk.splitlist(self._do('gettags', self.tag)) + def icursor(self, index): + return self._do('icursor', index) + def index(self, index): + return self.canvas.tk.getint(self._do('index', index)) + def insert(self, beforeThis, string): + self._do('insert', beforeThis, string) + def config(self, cnf={}, **kw): + return self.canvas.itemconfigure(self.tag, _cnfmerge((cnf,kw))) + def lower(self, belowThis=None): + self._do('tag_lower', belowThis) + def move(self, xAmount, yAmount): + self._do('move', xAmount, yAmount) + def tkraise(self, aboveThis=None): + self._do('tag_raise', aboveThis) + lift = tkraise + def scale(self, xOrigin, yOrigin, xScale, yScale): + self._do('scale', xOrigin, yOrigin, xScale, yScale) + def select_adjust(self, index): + self.canvas._do('select', ('adjust', self.tag, index)) + def select_from(self, index): + self.canvas._do('select', ('from', self.tag, index)) + def select_to(self, index): + self.canvas._do('select', ('to', self.tag, index)) + def type(self): + return self._do('type') diff --git a/Lib/lib-tk/Dialog.py b/Lib/lib-tk/Dialog.py index 67e7dc90ecb..e529001a8f3 100644 --- a/Lib/lib-tk/Dialog.py +++ b/Lib/lib-tk/Dialog.py @@ -4,46 +4,46 @@ from Tkinter import * from Tkinter import _cnfmerge if TkVersion <= 3.6: - DIALOG_ICON = 'warning' + DIALOG_ICON = 'warning' else: - DIALOG_ICON = 'questhead' + DIALOG_ICON = 'questhead' class Dialog(Widget): - def __init__(self, master=None, cnf={}, **kw): - cnf = _cnfmerge((cnf, kw)) - self.widgetName = '__dialog__' - Widget._setup(self, master, cnf) - self.num = self.tk.getint( - apply(self.tk.call, - ('tk_dialog', self._w, - cnf['title'], cnf['text'], - cnf['bitmap'], cnf['default']) - + cnf['strings'])) - try: Widget.destroy(self) - except TclError: pass - def destroy(self): pass + def __init__(self, master=None, cnf={}, **kw): + cnf = _cnfmerge((cnf, kw)) + self.widgetName = '__dialog__' + Widget._setup(self, master, cnf) + self.num = self.tk.getint( + apply(self.tk.call, + ('tk_dialog', self._w, + cnf['title'], cnf['text'], + cnf['bitmap'], cnf['default']) + + cnf['strings'])) + try: Widget.destroy(self) + except TclError: pass + def destroy(self): pass def _test(): - d = Dialog(None, {'title': 'File Modified', - 'text': - 'File "Python.h" has been modified' - ' since the last time it was saved.' - ' Do you want to save it before' - ' exiting the application.', - 'bitmap': DIALOG_ICON, - 'default': 0, - 'strings': ('Save File', - 'Discard Changes', - 'Return to Editor')}) - print d.num + d = Dialog(None, {'title': 'File Modified', + 'text': + 'File "Python.h" has been modified' + ' since the last time it was saved.' + ' Do you want to save it before' + ' exiting the application.', + 'bitmap': DIALOG_ICON, + 'default': 0, + 'strings': ('Save File', + 'Discard Changes', + 'Return to Editor')}) + print d.num if __name__ == '__main__': - t = Button(None, {'text': 'Test', - 'command': _test, - Pack: {}}) - q = Button(None, {'text': 'Quit', - 'command': t.quit, - Pack: {}}) - t.mainloop() + t = Button(None, {'text': 'Test', + 'command': _test, + Pack: {}}) + q = Button(None, {'text': 'Quit', + 'command': t.quit, + Pack: {}}) + t.mainloop() diff --git a/Lib/lib-tk/ScrolledText.py b/Lib/lib-tk/ScrolledText.py index 05b728a5ab1..866da3ad0cf 100644 --- a/Lib/lib-tk/ScrolledText.py +++ b/Lib/lib-tk/ScrolledText.py @@ -14,26 +14,26 @@ from Tkinter import * from Tkinter import _cnfmerge class ScrolledText(Text): - def __init__(self, master=None, cnf=None, **kw): - if cnf is None: - cnf = {} - if kw: - cnf = _cnfmerge((cnf, kw)) - fcnf = {} - for k in cnf.keys(): - if type(k) == ClassType or k == 'name': - fcnf[k] = cnf[k] - del cnf[k] - self.frame = apply(Frame, (master,), fcnf) - self.vbar = Scrollbar(self.frame, name='vbar') - self.vbar.pack(side=RIGHT, fill=Y) - cnf['name'] = 'text' - apply(Text.__init__, (self, self.frame), cnf) - self.pack(side=LEFT, fill=BOTH, expand=1) - self['yscrollcommand'] = self.vbar.set - self.vbar['command'] = self.yview + def __init__(self, master=None, cnf=None, **kw): + if cnf is None: + cnf = {} + if kw: + cnf = _cnfmerge((cnf, kw)) + fcnf = {} + for k in cnf.keys(): + if type(k) == ClassType or k == 'name': + fcnf[k] = cnf[k] + del cnf[k] + self.frame = apply(Frame, (master,), fcnf) + self.vbar = Scrollbar(self.frame, name='vbar') + self.vbar.pack(side=RIGHT, fill=Y) + cnf['name'] = 'text' + apply(Text.__init__, (self, self.frame), cnf) + self.pack(side=LEFT, fill=BOTH, expand=1) + self['yscrollcommand'] = self.vbar.set + self.vbar['command'] = self.yview - # Copy Pack methods of self.frame -- hack! - for m in Pack.__dict__.keys(): - if m[0] != '_' and m != 'config' and m != 'configure': - setattr(self, m, getattr(self.frame, m)) + # Copy Pack methods of self.frame -- hack! + for m in Pack.__dict__.keys(): + if m[0] != '_' and m != 'config' and m != 'configure': + setattr(self, m, getattr(self.frame, m)) diff --git a/Lib/lib-tk/Tkdnd.py b/Lib/lib-tk/Tkdnd.py index a4e1d1f722f..2e37d9ec395 100644 --- a/Lib/lib-tk/Tkdnd.py +++ b/Lib/lib-tk/Tkdnd.py @@ -1,12 +1,12 @@ -"""Drag-and-drop support for Tkinter. - +"""Drag-and-drop support for Tkinter. + This is very preliminary. I currently only support dnd *within* one application, between different windows (or within the same window). - + I an trying to make this as generic as possible -- not dependent on the use of a particular widget or icon type, etc. I also hope that this will work with Pmw. - + To enable an object to be dragged, you must create an event binding for it that starts the drag-and-drop process. Typically, you should bind to a callback function that you write. The function @@ -20,11 +20,11 @@ When a drag-and-drop is already in process for the Tk interpreter, the call is *ignored*; this normally averts starting multiple simultaneous dnd processes, e.g. because different button callbacks all dnd_start(). - + The object is *not* necessarily a widget -- it can be any application-specific object that is meaningful to potential drag-and-drop targets. - + Potential drag-and-drop targets are discovered as follows. Whenever the mouse moves, and at the start and end of a drag-and-drop move, the Tk widget directly under the mouse is inspected. This is the target @@ -43,34 +43,34 @@ target widget, and the search for a target object is repeated from there. If necessary, the search is repeated all the way up to the root widget. If none of the target widgets can produce a target object, there is no target object (the target object is None). - + The target object thus produced, if any, is called the new target object. It is compared with the old target object (or None, if there was no old target widget). There are several cases ('source' is the source object, and 'event' is the most recent event object): - + - Both the old and new target objects are None. Nothing happens. - + - The old and new target objects are the same object. Its method dnd_motion(source, event) is called. - + - The old target object was None, and the new target object is not None. The new target object's method dnd_enter(source, event) is called. - + - The new target object is None, and the old target object is not None. The old target object's method dnd_leave(source, event) is called. - + - The old and new target objects differ and neither is None. The old target object's method dnd_leave(source, event), and then the new target object's method dnd_enter(source, event) is called. - + Once this is done, the new target object replaces the old one, and the Tk mainloop proceeds. The return value of the methods mentioned above is ignored; if they raise an exception, the normal exception handling mechanisms take over. - + The drag-and-drop processes can end in two ways: a final target object is selected, or no final target object is selected. When a final target object is selected, it will always have been notified of the @@ -79,7 +79,7 @@ above, and possibly one or more calls to its dnd_motion() method; its dnd_leave() method has not been called since the last call to dnd_enter(). The target is notified of the drop by a call to its method dnd_commit(source, event). - + If no final target object is selected, and there was an old target object, its dnd_leave(source, event) method is called to complete the dnd sequence. diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py index 5f1465cd516..4f8c1ed73f6 100644 --- a/Lib/lib-tk/Tkinter.py +++ b/Lib/lib-tk/Tkinter.py @@ -3086,4 +3086,3 @@ def _test(): if __name__ == '__main__': _test() - diff --git a/Lib/lib-tk/tkCommonDialog.py b/Lib/lib-tk/tkCommonDialog.py index 55cf0646cb1..32b8a8bf308 100644 --- a/Lib/lib-tk/tkCommonDialog.py +++ b/Lib/lib-tk/tkCommonDialog.py @@ -63,4 +63,3 @@ class Dialog: pass return s - diff --git a/Lib/lib-tk/tkFont.py b/Lib/lib-tk/tkFont.py index 5e9abed66a0..a41e368aa30 100644 --- a/Lib/lib-tk/tkFont.py +++ b/Lib/lib-tk/tkFont.py @@ -8,7 +8,7 @@ # # FIXME: should add 'displayof' option where relevant (actual, families, # measure, and metrics) -# +# # Copyright (c) Secret Labs AB 1998. # # info@pythonware.com @@ -52,10 +52,10 @@ class Font: return tuple(options) def _get(self, args): - options = [] - for k in args: - options.append("-"+k) - return tuple(options) + options = [] + for k in args: + options.append("-"+k) + return tuple(options) def _mkdict(self, args): options = {} @@ -117,7 +117,7 @@ class Font: ) configure = config - + def measure(self, text): "Return text width" return string.atoi(self._call("font", "measure", self.name, text)) @@ -143,7 +143,7 @@ def families(root=None): "Get font families (as a tuple)" if not root: root = Tkinter._default_root - return root.tk.splitlist(root.tk.call("font", "families")) + return root.tk.splitlist(root.tk.call("font", "families")) def names(root=None): "Get names of defined fonts (as a tuple)" @@ -153,7 +153,7 @@ def names(root=None): # -------------------------------------------------------------------- # test stuff - + if __name__ == "__main__": root = Tkinter.Tk() @@ -186,7 +186,7 @@ if __name__ == "__main__": fb = Font(font=w["font"]).copy() fb.config(weight=BOLD) - + w.config(font=fb) Tkinter.mainloop() diff --git a/Lib/lib-tk/tkSimpleDialog.py b/Lib/lib-tk/tkSimpleDialog.py index 395a369f974..0dc5c84cae8 100644 --- a/Lib/lib-tk/tkSimpleDialog.py +++ b/Lib/lib-tk/tkSimpleDialog.py @@ -86,18 +86,18 @@ class Dialog(Toplevel): def body(self, master): '''create dialog body. - return widget that should have initial focus. + return widget that should have initial focus. This method should be overridden, and is called by the __init__ method. ''' pass def buttonbox(self): - '''add standard button box. + '''add standard button box. override if you don't want the standard buttons ''' - + box = Frame(self) w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE) @@ -138,7 +138,7 @@ class Dialog(Toplevel): def validate(self): '''validate the data - This method is called automatically to validate the data before the + This method is called automatically to validate the data before the dialog is destroyed. By default, it always validates OK. ''' @@ -227,7 +227,7 @@ class _QueryDialog(Dialog): parent = self ) return 0 - + self.result = result return 1 @@ -289,7 +289,7 @@ def askstring(title, prompt, **kw): d = apply(_QueryString, (title, prompt), kw) return d.result -if __name__ == "__main__": +if __name__ == "__main__": root = Tk() root.update() @@ -297,4 +297,3 @@ if __name__ == "__main__": print askinteger("Spam", "Egg count", initialvalue=12*12) print askfloat("Spam", "Egg weight\n(in tons)", minvalue=1, maxvalue=100) print askstring("Spam", "Egg label") - diff --git a/Lib/lib-tk/turtle.py b/Lib/lib-tk/turtle.py index 7c956ee487b..4e73f52eab2 100644 --- a/Lib/lib-tk/turtle.py +++ b/Lib/lib-tk/turtle.py @@ -108,7 +108,7 @@ class RawPen: def write(self, arg, move=0): x, y = start = self._position x = x-1 # correction -- calibrated for Windows - item = self._canvas.create_text(x, y, + item = self._canvas.create_text(x, y, text=str(arg), anchor="sw", fill=self._color) self._items.append(item) @@ -258,7 +258,7 @@ class Pen(RawPen): _root = None _canvas = None root.destroy() - + def _getpen(): global _pen