cpython/Lib/tkinter/scrolledtext.py
Georg Brandl d98934c483 Merged revisions 87101,87146,87156,87172,87175,87371,87378,87522-87524,87526-87528,87530-87536,87581 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k

........
  r87101 | georg.brandl | 2010-12-06 23:02:48 +0100 (Mo, 06 Dez 2010) | 1 line

  Remove visible XXX comments.
........
  r87146 | georg.brandl | 2010-12-09 19:08:43 +0100 (Do, 09 Dez 2010) | 1 line

  Fix "seperate".
........
  r87156 | georg.brandl | 2010-12-10 11:01:44 +0100 (Fr, 10 Dez 2010) | 1 line

  #10668: fix wrong call of __init__.
........
  r87172 | georg.brandl | 2010-12-11 20:10:30 +0100 (Sa, 11 Dez 2010) | 1 line

  Avoid AttributeError(_closed) when a TemporaryDirectory is deallocated whose mkdtemp call failed.
........
  r87175 | georg.brandl | 2010-12-11 23:19:34 +0100 (Sa, 11 Dez 2010) | 1 line

  Fix markup.
........
  r87371 | georg.brandl | 2010-12-18 17:21:58 +0100 (Sa, 18 Dez 2010) | 1 line

  Fix typo.
........
  r87378 | georg.brandl | 2010-12-18 18:51:28 +0100 (Sa, 18 Dez 2010) | 1 line

  #10723: add missing builtin exceptions.
........
  r87522 | georg.brandl | 2010-12-28 10:16:12 +0100 (Di, 28 Dez 2010) | 1 line

  Replace sys.maxint mention by sys.maxsize.
........
  r87523 | georg.brandl | 2010-12-28 10:18:24 +0100 (Di, 28 Dez 2010) | 1 line

  Remove confusing paragraph -- this is relevant only to advanced users anyway and does not belong into the tutorial.
........
  r87524 | georg.brandl | 2010-12-28 10:29:19 +0100 (Di, 28 Dez 2010) | 1 line

  Fix advice: call PyType_Ready to fill in ob_type of custom types.
........
  r87526 | georg.brandl | 2010-12-28 11:38:33 +0100 (Di, 28 Dez 2010) | 1 line

  #10777: fix iteration over dict keys while mutating the dict.
........
  r87527 | georg.brandl | 2010-12-28 11:56:20 +0100 (Di, 28 Dez 2010) | 1 line

  #10768: fix ScrolledText widget construction, and make the example work from the interactive shell.
........
  r87528 | georg.brandl | 2010-12-28 12:02:12 +0100 (Di, 28 Dez 2010) | 1 line

  Add news entry and clarify another.
........
  r87530 | georg.brandl | 2010-12-28 12:06:07 +0100 (Di, 28 Dez 2010) | 1 line

  #10767: update README in crashers; not all may have a bug entry and/or be fixed.
........
  r87531 | georg.brandl | 2010-12-28 12:08:17 +0100 (Di, 28 Dez 2010) | 1 line

  #10742: document readonly attribute of memoryviews.
........
  r87532 | georg.brandl | 2010-12-28 12:15:49 +0100 (Di, 28 Dez 2010) | 1 line

  #10781: clarify that *encoding* is not a parameter for Node objects in general.
........
  r87533 | georg.brandl | 2010-12-28 12:38:12 +0100 (Di, 28 Dez 2010) | 1 line

  Remove history; adapt a bit more to reST, since this will once be part of the dev guide.
........
  r87534 | georg.brandl | 2010-12-28 12:48:53 +0100 (Di, 28 Dez 2010) | 1 line

  Rewrap.
........
  r87535 | georg.brandl | 2010-12-28 12:49:41 +0100 (Di, 28 Dez 2010) | 1 line

  #10739: document that on Windows, socket.makefile() does not make a file that has a true file descriptor usable where such a thing is expected.
........
  r87536 | georg.brandl | 2010-12-28 12:53:25 +0100 (Di, 28 Dez 2010) | 1 line

  #10609: fix non-working dbm example.
........
  r87581 | georg.brandl | 2010-12-30 18:36:17 +0100 (Do, 30 Dez 2010) | 1 line

  Fix NameErrors.
........
2011-02-25 10:03:34 +00:00

55 lines
1.8 KiB
Python

"""A ScrolledText widget feels like a text widget but also has a
vertical scroll bar on its right. (Later, options may be added to
add a horizontal bar as well, to make the bars disappear
automatically when not needed, to move them to the other side of the
window, etc.)
Configuration options are passed to the Text widget.
A Frame widget is inserted between the master and the text, to hold
the Scrollbar widget.
Most methods calls are inherited from the Text widget; Pack, Grid and
Place methods are redirected to the Frame widget however.
"""
__all__ = ['ScrolledText']
from tkinter import Frame, Text, Scrollbar, Pack, Grid, Place
from tkinter.constants import RIGHT, LEFT, Y, BOTH
class ScrolledText(Text):
def __init__(self, master=None, **kw):
self.frame = Frame(master)
self.vbar = Scrollbar(self.frame)
self.vbar.pack(side=RIGHT, fill=Y)
kw.update({'yscrollcommand': self.vbar.set})
Text.__init__(self, self.frame, **kw)
self.pack(side=LEFT, fill=BOTH, expand=True)
self.vbar['command'] = self.yview
# Copy geometry methods of self.frame without overriding Text
# methods -- hack!
text_meths = vars(Text).keys()
methods = vars(Pack).keys() | vars(Grid).keys() | vars(Place).keys()
methods = methods.difference(text_meths)
for m in methods:
if m[0] != '_' and m != 'config' and m != 'configure':
setattr(self, m, getattr(self.frame, m))
def __str__(self):
return str(self.frame)
def example():
from tkinter.constants import END
stext = ScrolledText(bg='white', height=10)
stext.insert(END, __doc__)
stext.pack(fill=BOTH, side=LEFT, expand=True)
stext.focus_set()
stext.mainloop()
if __name__ == "__main__":
example()