diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2008-12-29 16:03:04 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2008-12-29 16:03:04 (GMT) |
commit | e354d78b30dcb12c855a425e2404e478d36a5b95 (patch) | |
tree | 9585d788611d03e535c40c0b8b12ae3e81074522 | |
parent | 7560d7a2457c20f507bb2bc665ffae51e3fb668c (diff) | |
download | cpython-e354d78b30dcb12c855a425e2404e478d36a5b95.zip cpython-e354d78b30dcb12c855a425e2404e478d36a5b95.tar.gz cpython-e354d78b30dcb12c855a425e2404e478d36a5b95.tar.bz2 |
Merged revisions 68006 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68006 | martin.v.loewis | 2008-12-29 16:51:01 +0100 (Mo, 29 Dez 2008) | 2 lines
Issue #3248: Allow placing ScrolledText in a PanedWindow.
........
-rw-r--r-- | Lib/tkinter/scrolledtext.py | 74 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
2 files changed, 44 insertions, 32 deletions
diff --git a/Lib/tkinter/scrolledtext.py b/Lib/tkinter/scrolledtext.py index 35767e6..d2a9987 100644 --- a/Lib/tkinter/scrolledtext.py +++ b/Lib/tkinter/scrolledtext.py @@ -1,42 +1,52 @@ -# 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 methods -# are redirected to the Frame widget however. - -from tkinter import * -from tkinter import _cnfmerge +"""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, cnf=None, **kw): - if cnf is None: - cnf = {} - if kw: - cnf = _cnfmerge((cnf, kw)) - fcnf = {k:v for k,v in cnf.items() if isinstance(k,type) or k=='name'} - for k in fcnf.keys(): - del cnf[k] - - self.frame = Frame(master, **fcnf) - self.vbar = Scrollbar(self.frame, name='vbar') + def __init__(self, master=None, **kw): + self.frame = Frame(master) + self.vbar = Scrollbar(self.frame) self.vbar.pack(side=RIGHT, fill=Y) - cnf['name'] = 'text' - Text.__init__(self, self.frame, **cnf) - self.pack(side=LEFT, fill=BOTH, expand=1) - self['yscrollcommand'] = self.vbar.set + + 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 -- hack! - methods = Pack.__dict__.keys() - methods = methods + Grid.__dict__.keys() - methods = methods + Place.__dict__.keys() + methods = vars(Pack).keys() + vars(Grid).keys() + vars(Place).keys() 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(): + import __main__ + from tkinter.constants import END + + stext = ScrolledText(bg='white', height=10) + stext.insert(END, __main__.__doc__) + stext.pack(fill=BOTH, side=LEFT, expand=True) + stext.focus_set() + stext.mainloop() + +if __name__ == "__main__": + example() @@ -64,6 +64,8 @@ Core and Builtins Library ------- +- Issue #3248: Allow placing ScrolledText in a PanedWindow. + - Issue #4444: Allow assertRaises() to be used as a context handler, so that the code under test can be written inline if more practical. |