# Pmw.TimeCounter

### Name

  Pmw.TimeCounter() - counter for display and input of time

### Inherits

  Pmw.MegaWidget

### Description

  A time counter is similar to a regular Pmw.Counter except that the user may increment and decrement the hours, minutes and seconds individually.

### Options

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

  autorepeat
    If true, the counter will continue to count up or down while an arrow button is held pressed down. The default is 1.
  buttonaspect
    Initialisation option. Specifies the width of the arrow buttons as a proportion of their height. Values less than 1.0 will produce thin arrow buttons. Values greater than 1.0 will produce fat arrow buttons. The default is 1.0.
  command
    This specifies a function to call whenever the <Return> key is pressed in one of the entry fields or `invoke()` is called. The default is None.
  initwait
    Specifies the initial delay (in milliseconds) before a depressed arrow button automatically starts to repeat counting. The default is 300.
  labelmargin
    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.
  labelpos
    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.

  max
    Specifies the maximum acceptable time in the form "HH:MM:SS", or None if no maximum checking should be performed. The default is None.
  min
    Specifies the minimum acceptable time in the form "HH:MM:SS", or None if no minimum checking should be performed. The default is None.
  padx
    Initialisation option. Specifies how much wider to make each column than the default width (where a column consists of two arrows and an entry field). The entry fields expand to fill the extra space, but the arrow buttons are centered in the available space. The default is 0.
  pady
    Initialisation option. Specifies how much higher to make each row of arrow buttons than the default hight. The arrow buttons are centered in the available space. The default is 0.
  repeatrate
    Specifies the delay (in milliseconds) between automatic counts while an arrow button is held pressed down. The default is 50.
  value
    Initialisation option. Specifies the initial contents of the time counter, in the form "HH:MM:SS". If this is None, the current time is used as the initial contents. The default is None.

### Components

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

  downhourarrow
    The arrow button used for decrementing the hour field. By default, this component is a tkinter.Canvas. Its component group is Arrow.
  downminutearrow
    The arrow button used for decrementing the minute field. By default, this component is a tkinter.Canvas. Its component group is Arrow.
  downsecondarrow
    The arrow button used for decrementing the second field. By default, this component is a tkinter.Canvas. Its component group is Arrow.
  frame
    If the label component has been created (that is, the labelpos option is not None), the frame component is created to act as the container of the entry fields and arrow buttons. If there is no label component, then no frame component is created and the hull component acts as the container. In either case the border around the container of the entry fields and arrow buttons will be raised (but not around the label). By default, this component is a tkinter.Frame.
  hourentryfield
    The entry field where the hours are entered and displayed. By default, this component is a Pmw.EntryField.
  hull
    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.
  label
    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.
  minuteentryfield
    The entry field where the minutes are entered and displayed. By default, this component is a Pmw.EntryField.
  secondentryfield
    The entry field where the seconds are entered and displayed. By default, this component is a Pmw.EntryField.
  uphourarrow
    The arrow button used for incrementing the hour field. By default, this component is a tkinter.Canvas. Its component group is Arrow.
  upminutearrow
    The arrow button used for incrementing the minute field. By default, this component is a tkinter.Canvas. Its component group is Arrow.
  upsecondarrow
    The arrow button used for incrementing the second field. By default, this component is a tkinter.Canvas. Its component group is Arrow.

### Component aliases

  Sub-components of components of this megawidget may be accessed via the following aliases.

  hourentry
    Alias for hourentryfield_entry.
  minuteentry
    Alias for minuteentryfield_entry.
  secondentry
    Alias for secondentryfield_entry.

### Methods

  Only methods specific to this megawidget are described below. For a description of its inherited methods, see the manual for its base class Pmw.MegaWidget.

  decrement(seconds = 1)
    Decrement the time by seconds seconds.
  getint()
    Return the currently displayed time as a number of seconds.
  getstring()
    Same as `getvalue()` method.
  getvalue()
    Return the currently displayed time as a string in the form "HH:MM:SS".
  increment(seconds = 1)
    Increment the time by seconds seconds.
  invoke()
    Invoke the command specified by the command option as if the <Return> key had been pressed.
  setvalue(text)
    Set the contents of the time counter, where text must be in the form "HH:MM:SS".

### Example

  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):
              self._time = Pmw.TimeCounter(parent,
                      labelpos = 'w',
                      label_text = 'HH:MM:SS',
                      min = '00:00:00',
                      max = '23:59:59')
              self._time.pack(padx=10, pady=5)

              button = tkinter.Button(parent, text = 'Show', command = self.show)
              button.pack()

          def show(self):
              stringVal = self._time.getstring()
              intVal =  self._time.getint()
              print(stringVal + '  (' + str(intVal) + ')')

Pmw 2.1 - 31 Dec 2020 - Home
Manual page last reviewed: 25 May 2002