请问怎么用pyqt5写一个输入框可以显示和监听键盘按键

查看 42|回复 2
作者:Uiisland   
全部家当,就100CB
想要实现的功能就是  在一个窗口内的输入框,当鼠标点击这个输入框之后开始监听键盘按键信息,当按住两个键后能够显示为 键1+键2

输入框, 按键

demonw   

百度的,可以用,只写了少量例子,其它的按键需要按需自行添加上去。
[Python] 纯文本查看 复制代码from PyQt5.QtWidgets import QApplication, QWidget,QLineEdit,QPushButton
import sys
from PyQt5.QtGui import QCursor
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QPixmap


class LineEdit(QLineEdit):
    def keyPressEvent(self, QKeyEvent):  # 键盘某个键被按下时调用
        #参数1  控件
        if QKeyEvent.key()== Qt.Key_A:  #判断是否按下了A键
            #key()  是普通键
            print('按下了A键')
            self.setText('按下了A键')
        if QKeyEvent.key()== Qt.Key_B:  #判断是否按下了A键
            #key()  是普通键
            print('按下了B键')
            self.setText('按下了B键')

        if QKeyEvent.modifiers()==Qt.ControlModifier and QKeyEvent.key()== Qt.Key_A:#两键组合
            #modifiers()   判断修饰键
            #Qt.NoModifier   没有修饰键
            #Qt.ShiftModifier    Shift键被按下
            #Qt.ControlModifier    Ctrl键被按下
            #Qt.AltModifier      Alt键被按下
            print('按下了Ctrl-A键')
            self.setText('按下了Ctrl-A键')

        if QKeyEvent.modifiers() == Qt.ControlModifier|Qt.ShiftModifier and QKeyEvent.key() == Qt.Key_A:  # 三键组合
            print('按下了Ctrl+Shift+A键')
            self.setText('按下了Ctrl+Shift+A键')


class win(QWidget): #创建一个类,为了集成控件
    def __init__(self):
        super().__init__()
        self.resize(600,600)
        self.setWindowTitle('事件学习')
        self.num = 0
        self.LineEdit = LineEdit('', self)
        self.LineEdit.grabKeyboard()   #控件开始捕获键盘
        # 只有控件开始捕获键盘,控件的键盘事件才能收到消息



if __name__=='__main__':
    app=QApplication(sys.argv)  #创建应用
    w=win()
    w.show()
    sys.exit(app.exec_())
yiqifeng   

js可以实现,python不会
您需要登录后才可以回帖 登录 | 立即注册

返回顶部