Guido van Rossum | 1846882 | 1994-06-20 07:49:28 +0000 | [diff] [blame] | 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 passed to the Text widget; the pack command |
| 11 | # is redirected to the Frame widget however. |
| 12 | |
| 13 | from Tkinter import * |
| 14 | |
| 15 | class ScrolledText(Pack, Place): |
| 16 | def __init__(self, master=None, cnf={}): |
| 17 | fcnf = {} |
| 18 | self.frame = Frame(master, {}) |
| 19 | if cnf.has_key(Pack): |
| 20 | self.frame.pack(cnf[Pack]) |
| 21 | del cnf[Pack] |
| 22 | self.vbar = Scrollbar(self.frame, {}) |
| 23 | self.vbar.pack({'side': 'right', 'fill': 'y'}) |
Guido van Rossum | 5179236 | 1994-07-06 21:15:27 +0000 | [diff] [blame^] | 24 | cnf[Pack] = {'side': 'left', 'fill': 'both', 'expand': 'yes'} |
Guido van Rossum | 1846882 | 1994-06-20 07:49:28 +0000 | [diff] [blame] | 25 | self.text = Text(self.frame, cnf) |
| 26 | self.text['yscrollcommand'] = (self.vbar, 'set') |
| 27 | self.vbar['command'] = (self.text, 'yview') |
| 28 | self.insert = self.text.insert |
| 29 | # XXX should do all Text methods... |
| 30 | self.pack = self.frame.pack |
Guido van Rossum | 5179236 | 1994-07-06 21:15:27 +0000 | [diff] [blame^] | 31 | self.bind = self.text.bind |
Guido van Rossum | 1846882 | 1994-06-20 07:49:28 +0000 | [diff] [blame] | 32 | self.forget = self.frame.forget |
Guido van Rossum | a3cd357 | 1994-07-06 09:28:21 +0000 | [diff] [blame] | 33 | self.delete = self.text.delete |
| 34 | self.insert = self.text.insert |
| 35 | self.index = self.text.index |
| 36 | self.get = self.text.get |
| 37 | self.mark_set = self.text.mark_set |
| 38 | self.tag_add = self.text.tag_add |
| 39 | self.tag_delete = self.text.tag_delete |
| 40 | self.tag_remove = self.text.tag_remove |
Guido van Rossum | 5179236 | 1994-07-06 21:15:27 +0000 | [diff] [blame^] | 41 | self.tag_config = self.text.tag_config |
Guido van Rossum | a3cd357 | 1994-07-06 09:28:21 +0000 | [diff] [blame] | 42 | self.yview = self.text.yview |
| 43 | self.yview_pickplace = self.text.yview_pickplace |
Guido van Rossum | 1846882 | 1994-06-20 07:49:28 +0000 | [diff] [blame] | 44 | self.tk = master.tk |
| 45 | def __str__(self): |
| 46 | return str(self.frame) |