2008-12-29 16:03:04 +00:00
|
|
|
"""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
|
1994-06-20 07:49:28 +00:00
|
|
|
|
1994-07-06 21:54:39 +00:00
|
|
|
class ScrolledText(Text):
|
2008-12-29 16:03:04 +00:00
|
|
|
def __init__(self, master=None, **kw):
|
|
|
|
self.frame = Frame(master)
|
|
|
|
self.vbar = Scrollbar(self.frame)
|
2000-10-23 18:31:14 +00:00
|
|
|
self.vbar.pack(side=RIGHT, fill=Y)
|
2008-12-29 16:03:04 +00:00
|
|
|
|
|
|
|
kw.update({'yscrollcommand': self.vbar.set})
|
|
|
|
Text.__init__(self, self.frame, **kw)
|
|
|
|
self.pack(side=LEFT, fill=BOTH, expand=True)
|
2000-10-23 18:31:14 +00:00
|
|
|
self.vbar['command'] = self.yview
|
1994-07-06 21:54:39 +00:00
|
|
|
|
2001-12-10 16:42:43 +00:00
|
|
|
# Copy geometry methods of self.frame -- hack!
|
2008-12-29 16:03:04 +00:00
|
|
|
methods = vars(Pack).keys() + vars(Grid).keys() + vars(Place).keys()
|
2001-12-10 16:42:43 +00:00
|
|
|
|
|
|
|
for m in methods:
|
2000-10-23 18:31:14 +00:00
|
|
|
if m[0] != '_' and m != 'config' and m != 'configure':
|
|
|
|
setattr(self, m, getattr(self.frame, m))
|
2008-12-29 16:03:04 +00:00
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return str(self.frame)
|
|
|
|
|
|
|
|
|
|
|
|
def example():
|
|
|
|
from tkinter.constants import END
|
|
|
|
|
|
|
|
stext = ScrolledText(bg='white', height=10)
|
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
|
|
|
stext.insert(END, __doc__)
|
2008-12-29 16:03:04 +00:00
|
|
|
stext.pack(fill=BOTH, side=LEFT, expand=True)
|
|
|
|
stext.focus_set()
|
|
|
|
stext.mainloop()
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
example()
|