| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 7560d7a commit e354d78
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,42 +1,52 @@ | |||
| 1 | - # A ScrolledText widget feels like a text widget but also has a | ||
| 2 | - # vertical scroll bar on its right. (Later, options may be added to | ||
| 3 | - # add a horizontal bar as well, to make the bars disappear | ||
| 4 | - # automatically when not needed, to move them to the other side of the | ||
| 5 | - # window, etc.) | ||
| 6 | - # | ||
| 7 | - # Configuration options are passed to the Text widget. | ||
| 8 | - # A Frame widget is inserted between the master and the text, to hold | ||
| 9 | - # the Scrollbar widget. | ||
| 10 | - # Most methods calls are inherited from the Text widget; Pack methods | ||
| 11 | - # are redirected to the Frame widget however. | ||
| 12 | - | ||
| 13 | - from tkinter import * | ||
| 14 | - from tkinter import _cnfmerge | ||
| 1 | + """A ScrolledText widget feels like a text widget but also has a | ||
| 2 | + vertical scroll bar on its right. (Later, options may be added to | ||
| 3 | + add a horizontal bar as well, to make the bars disappear | ||
| 4 | + automatically when not needed, to move them to the other side of the | ||
| 5 | + window, etc.) | ||
| 6 | + | ||
| 7 | + Configuration options are passed to the Text widget. | ||
| 8 | + A Frame widget is inserted between the master and the text, to hold | ||
| 9 | + the Scrollbar widget. | ||
| 10 | + Most methods calls are inherited from the Text widget; Pack, Grid and | ||
| 11 | + Place methods are redirected to the Frame widget however. | ||
| 12 | + """ | ||
| 13 | + | ||
| 14 | + __all__ = ['ScrolledText'] | ||
| 15 | + | ||
| 16 | + from tkinter import Frame, Text, Scrollbar, Pack, Grid, Place | ||
| 17 | + from tkinter.constants import RIGHT, LEFT, Y, BOTH | ||
| 15 | 18 | ||
| 16 | 19 | class ScrolledText(Text): | |
| 17 | - def __init__(self, master=None, cnf=None, **kw): | ||
| 18 | - if cnf is None: | ||
| 19 | - cnf = {} | ||
| 20 | - if kw: | ||
| 21 | - cnf = _cnfmerge((cnf, kw)) | ||
| 22 | - fcnf = {k:v for k,v in cnf.items() if isinstance(k,type) or k=='name'} | ||
| 23 | - for k in fcnf.keys(): | ||
| 24 | - del cnf[k] | ||
| 25 | - | ||
| 26 | - self.frame = Frame(master, **fcnf) | ||
| 27 | - self.vbar = Scrollbar(self.frame, name='vbar') | ||
| 20 | + def __init__(self, master=None, **kw): | ||
| 21 | + self.frame = Frame(master) | ||
| 22 | + self.vbar = Scrollbar(self.frame) | ||
| 28 | 23 | self.vbar.pack(side=RIGHT, fill=Y) | |
| 29 | - cnf['name'] = 'text' | ||
| 30 | - Text.__init__(self, self.frame, **cnf) | ||
| 31 | - self.pack(side=LEFT, fill=BOTH, expand=1) | ||
| 32 | - self['yscrollcommand'] = self.vbar.set | ||
| 24 | + | ||
| 25 | + kw.update({'yscrollcommand': self.vbar.set}) | ||
| 26 | + Text.__init__(self, self.frame, **kw) | ||
| 27 | + self.pack(side=LEFT, fill=BOTH, expand=True) | ||
| 33 | 28 | self.vbar['command'] = self.yview | |
| 34 | 29 | ||
| 35 | 30 | # Copy geometry methods of self.frame -- hack! | |
| 36 | - methods = Pack.__dict__.keys() | ||
| 37 | - methods = methods + Grid.__dict__.keys() | ||
| 38 | - methods = methods + Place.__dict__.keys() | ||
| 31 | + methods = vars(Pack).keys() + vars(Grid).keys() + vars(Place).keys() | ||
| 39 | 32 | ||
| 40 | 33 | for m in methods: | |
| 41 | 34 | if m[0] != '_' and m != 'config' and m != 'configure': | |
| 42 | 35 | setattr(self, m, getattr(self.frame, m)) | |
| 36 | + | ||
| 37 | + def __str__(self): | ||
| 38 | + return str(self.frame) | ||
| 39 | + | ||
| 40 | + | ||
| 41 | + def example(): | ||
| 42 | + import __main__ | ||
| 43 | + from tkinter.constants import END | ||
| 44 | + | ||
| 45 | + stext = ScrolledText(bg='white', height=10) | ||
| 46 | + stext.insert(END, __main__.__doc__) | ||
| 47 | + stext.pack(fill=BOTH, side=LEFT, expand=True) | ||
| 48 | + stext.focus_set() | ||
| 49 | + stext.mainloop() | ||
| 50 | + | ||
| 51 | + if __name__ == "__main__": | ||
| 52 | + example() | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -64,6 +64,8 @@ Core and Builtins | |||
| 64 | 64 | Library | |
| 65 | 65 | ------- | |
| 66 | 66 | ||
| 67 | + - Issue #3248: Allow placing ScrolledText in a PanedWindow. | ||
| 68 | + | ||
| 67 | 69 | - Issue #4444: Allow assertRaises() to be used as a context handler, so that | |
| 68 | 70 | the code under test can be written inline if more practical. | |
| 69 | 71 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments