Pmw.ScrolledField() - single line scrollable output field




A scrolled field displays a single line of text. If the text is too wide to display in the megawidget it can be scrolled to the left and right by the user by dragging with the middle mouse button. The text is also selectable by clicking or dragging with the left mouse button.

It can be used instead of a Tkinter.Label widget when displaying text of unknown width such as application status messages.


Options for this megawidget and its base classes are described below.

Initialisation option. If the labelpos option is not None, this specifies the distance between the label component and the rest of the megawidget. The default is 0.

Initialisation option. Specifies where to place the label component. If not None, it should be a concatenation of one or two of the letters 'n', 's', 'e' and 'w'. The first letter specifies on which side of the megawidget to place the label. If a second letter is specified, it indicates where on that side to place the label. For example, if labelpos is 'w', the label is placed in the center of the left hand side; if it is 'wn', the label is placed at the top of the left hand side; if it is 'ws', the label is placed at the bottom of the left hand side.

If None, a label component is not created. The default is None.

Initialisation option. The default is 'ew'.

Specifies the text to display in the scrolled field. The default is ''.


Components created by this megawidget and its base classes are described below.

This is used to display the text and allows the user to scroll and select the text. The state of this component is set to 'readonly' (or 'disabled' in earlier versions of Tcl/Tk which do not support 'readonly'), so that the user is unable to modify the text. By default, this component is a Tkinter.Entry.

This acts as the body for the entire megawidget. Other components are created as children of the hull to further specialise this class. By default, this component is a Tkinter.Frame.

If the labelpos option is not None, this component is created as a text label for the megawidget. See the labelpos option for details. Note that to set, for example, the text option of the label, you need to use the label_text component option. By default, this component is a Tkinter.Label.


This megawidget has no methods of its own. For a description of its inherited methods, see the manual for its base class Pmw.MegaWidget. In addition, methods from the Tkinter.Entry class are forwarded by this megawidget to the entry component.


The image at the top of this manual is a snapshot of the window (or part of the window) produced by the following code.

class Demo:
    def __init__(self, parent):
        # Create and pack the ScrolledField.
        self._field = Pmw.ScrolledField(parent, entry_width = 30,
                entry_relief='groove', labelpos = 'n',
                label_text = 'Scroll the field using the\nmiddle mouse button')
        self._field.pack(fill = 'x', expand = 1, padx = 10, pady = 10)

        # Create and pack a button to change the ScrolledField.
        self._button = Tkinter.Button(parent, text = 'Change field',
                command = self.execute)
        self._button.pack(padx = 10, pady = 10)

        self._index = 0

    def execute(self):
        self._field.configure(text = lines[self._index % len(lines)])
        self._index = self._index + 1

lines = (
  'Alice was beginning to get very tired of sitting by her sister',
  'on the bank, and of having nothing to do:  once or twice she had',
  'peeped into the book her sister was reading, but it had no',
  'pictures or conversations in it, "and what is the use of a book,"',
  'thought Alice "without pictures or conversation?"',
  'Alice\'s Adventures in Wonderland',
  'Lewis Carroll',

Pmw 1.3 - 6 Aug 2007 - Home
Manual page last reviewed: 23 August 1998