Hello all-

I have a set of buttons in my application which I want the user to be able to operate via mouse or keyboard. If they click the mouse pointer on the button, the button presses and stays down for as long as they hold down the mouse button. When they let go the button pops back up.

However, if they press and hold the associated keyboard key, the button presses twice - once quickly, then again (staying down until they let go of the key).

Despite much experimentation and reading I can't understand why this is happening. I want the button press to function with the keyboard exactly they way it does with the mouse.


    Here's how I'm attaching the keyboard shortcut signal to the button:

action = QtGui.QAction(self)
action.setShortcut(QtGui.QKeySequence("W"))
self.connect(action, QtCore.SIGNAL("activated()"), self.pushButtonForward, QtCore.SLOT("animateClick()"))
self.addAction(action)


    I have tried to make sure AutoRepeat is not set:

self.pushButtonForward.setAutoRepeat(False)
self.pushButtonForward.setAutoRepeatDelay(0)
self.pushButtonForward.setAutoRepeatInterval(0)


    ...but this has no effect.


    If I turn on Auto Repeat:

self.pushButtonForward.setAutoRepeat(True)


...then the button presses like crazy for as long as I hold down the key (as expected).


    If I try messing with the action:

action.setAutoRepeat(False)


...then when I press the key, the first, fast keypress happens, then the second, longer hold-down-as-long-as-I-hold-the-key-down never happens, which is the opposite of what I want (I want to remove the first keypress and just have the second one).


    Can anyone please offer suggestions as to what I might be doing wrong?


Looking at the "animateClick()" signal, that defaults to 100 ms (so perhaps is causing the problem), but I can't seem to override it in that statement by putting "animateClick(0)" in there - maybe I'm just confused?



Cheers


Steve Castellotti


_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to