i have qdialog window has continue button. continue button default button because whenever press enter key, continue button pressed. discovered strange: when press enter key 3 times, continue button presses 3 times. however, when press fourth time, whole window closes. have cancel button right below continue button closes window, don't make cancel button default button or anything.
i wanted override keypressevent
whenever i'm in window, enter button connected continue button.
this have right now:
class manualbalanceui(qtgui.qwidget): keypressed = qtcore.pyqtsignal() def __init__(self, cls): super(qtgui.qwidget, self).__init__() self.window = qtgui.qdialog(none, qtcore.qt.windowsystemmenuhint) self.ui = uic.loadui('manualbalanceui.ui', self.window) self.keypressed.connect(self.on_key) def keypressevent(self, event): super(manualbalanceui, self).keypressevent(event) self.keypressed.emit(event) def on_key(self, event): if event.key() == qtcore.qt.key_enter , self.ui.continuebutton.isenabled(): self.proceed() # called whenever continue button pressed elif event.key() == qtcore.qt.key_q: self.window.close() # test implemented see if pressing 'q' close window def proceed(self): ... ...
however, doesn't seem doing right now. pressing 'q' doesn't close window, , can't tell if 'enter' key working or not.
i looked @ question beforehand: pyqt connect keypressevent
i reviewed documentation on sourceforge. appreciated!
you can 2 ways , 1 re implement keypressevent out fancy work. this
from pyqt4 import qtcore, qtgui import sys class example(qtgui.qwidget): def __init__(self): super(example, self).__init__() self.setgeometry(300, 300, 250, 150) self.show() def keypressevent(self, event): if event.key() == qtcore.qt.key_q: print "killing" self.deletelater() elif event.key() == qtcore.qt.key_enter: self.proceed() event.accept() def proceed(self): print "call enter key" def main(): app = qtgui.qapplication(sys.argv) ex = example() sys.exit(app.exec_()) if __name__ == '__main__': main()
or tried signals, in case missing implement signal properly, here updated version.
class example(qtgui.qwidget): keypressed = qtcore.pyqtsignal(qtcore.qevent) def __init__(self): super(example, self).__init__() self.setgeometry(300, 300, 250, 150) self.show() self.keypressed.connect(self.on_key) def keypressevent(self, event): super(example, self).keypressevent(event) self.keypressed.emit(event) def on_key(self, event): if event.key() == qtcore.qt.key_enter , self.ui.continuebutton.isenabled(): self.proceed() # called whenever continue button pressed elif event.key() == qtcore.qt.key_q: print "killing" self.deletelater() # test implemented see if pressing 'q' close window def proceed(self): print "call enter key" def main(): app = qtgui.qapplication(sys.argv) ex = example() sys.exit(app.exec_()) if __name__ == '__main__': main()
Comments
Post a Comment