mirror of
https://github.com/python/cpython.git
synced 2024-11-25 02:44:06 +08:00
d98934c483
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. ........
55 lines
1.8 KiB
Python
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()
|