Tkinter: How to bind an event that repeats if continued to be selected
Martyn Quick
mrq at for.mat.bham.ac.uk
Tue Jan 8 09:00:17 EST 2002
Hi All!
The following appears to be a bit difficult, but probably it isn't if you
are an expert.
I've created a `counter'-like widget as shown below. Basically if you
click on the arrow button it increases the value displayed in the entry.
My question is what do I have to change in the bindings to make it behave
slightly differently, namely if you click on the arrow button and hold,
then after a while it begins to automatically increase (i.e., repeatedly
call self.increment until you release?
Many thanks in advance for any help!
Yours,
Martyn Quick
--------------CODE FOLLOWS-------------------
import Pmw, Tkinter
class Counter(Pmw.MegaWidget):
def __init__(self, parent=None):
Pmw.MegaWidget.__init__(self, parent)
interior = self.interior()
self.var = Tkinter.IntVar()
self.createcomponent(
'entry', (), None, Tkinter.Entry, (interior,),
state='disabled', textvariable=self.var,
width=5).pack(side='left')
self.arrow = self.createcomponent(
'arrow', (), None, Tkinter.Canvas, (interior,), width=16,
height=16, relief='raised', borderwidth=1)
self.arrow.pack()
Pmw.drawarrow(self.arrow, 'black', 'up', 'arrow')
self.arrow.bind('<1>', self.increment)
self.arrow.bind('<Any-ButtonRelease-1>', self.release)
def increment(self, event):
self.arrow.config(relief='sunken')
self.var.set(self.var.get()+1)
def release(self, event):
self.arrow.config(relief='raised')
--------------------------------------------------------
Dr. Martyn Quick (Lecturer in Pure Mathematics)
University of Birmingham, Edgbaston, Birmingham, UK.
http://www.mat.bham.ac.uk/M.R.Quick/
More information about the Python-list
mailing list