您的位置:首页 > 编程语言 > Python开发

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

2017-11-12 16:55 801 查看
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_())
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pyqt python 键盘