Python2.7,PyQt4,实现键盘监听事件

Python2.7,PyQt4,实现键盘监听事件


写了一个Pyqt4小程序,可以实现对键盘按键的监听,通过按下不同的按键,可以触发执行对应的函数或自定义操作


值得注意的是,键盘监听事件是通过重载KeyPressEvent()这个函数来实现的,而要实现这个重载,直接用QtDesigner生成或自己编写的SetUI()函数是不行的,要把这个函数名改一下,改为initUI()函数,另外构造函数也该修改,这样才能重载所有的事件函数。具体情况,可以参照下面给出的代码示例。


完整代码如下:





# -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui import sys from PyQt4.QtCore import * try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) reload(sys) sys.setdefaultencoding('utf8') class keyboard(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.initUi() self.resize(400,300) self.show() def setTask(self, taskTemp): self.task = taskTemp def initUi(self): self.label_1 = QtGui.QLabel("键盘监听小测试\n请按下‘D’,或者‘ESC’", self) self.retranslateUi() QtCore.QMetaObject.connectSlotsByName(self) def retranslateUi(self): self.label_1.setStyleSheet(_fromUtf8("font: 12pt \"微软雅黑\";\n" "")) #键盘监听函数,继承了父类,这里重写 def keyPressEvent(self, event): key = event.key() #按下D if key == QtCore.Qt.Key_D: print "D is pressed" #按ESC键,则退出程序 if key == QtCore.Qt.Key_Escape: self.close() if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) app.Encoding(QtGui.QApplication.UnicodeUTF8) utfcodec = QTextCodec.codecForName("UTF-8") QTextCodec.setCodecForTr(utfcodec) QTextCodec.setCodecForLocale(utfcodec) QTextCodec.setCodecForCStrings(utfcodec) ui = keyboard() sys.exit(app.exec_())

你可能感兴趣的:(Python,GUI编程)