1 import sys
2 from PyQt5 import QtWidgets,QtCore
3 from PyQt5.QtCore import Qt
4 from PyQt5.uic.properties import QtGui
5
6 key_list=['Qt.ControlModifier','Qt.ShiftModifier','Qt.AltModifier','Qt.Key_A','Qt.Key_B','Qt.Key_C','Qt.Key_D',\
7 'Qt.Key_E','Qt.Key_F','Qt.Key_G','Qt.Key_H','Qt.Key_I','Qt.Key_J','Qt.Key_K','Qt.Key_L','Qt.Key_M','Qt.Key_N\
8 ','Qt.Key_O','Qt.Key_P','Qt.Key_Q','Qt.Key_R','Qt.Key_S','Qt.Key_T','Qt.Key_U','Qt.Key_V','Qt.Key_W','Qt.Key_X\
9 ','Qt.Key_Y','Qt.Key_Z']
10
11 class Mywindow(QtWidgets.QWidget):
12 def __init__(self):
13 super(Mywindow, self).__init__()
14 self.create_Ui()
15
16 def create_Ui(self):
17
18 self.label= QtWidgets.QLabel(self)
19 label = self.label
20 label.setText("欢迎光临")
21 label.move(250,150)
22 label.resize(100,50)
23 label.setStyleSheet("background-color:yellow;color:blue;border: 1px solid gray;border-radius:5px")
24
25
26 def keyPressEvent(self, evt):
27 t="显示按键"
28
29 for i in key_list:
30
31 if evt.modifiers() == eval(i): #将获取的键值与序列中的地址比较
32 t = i.split('.')[-1].split('Mod')[0] #将序列中的值进行分割:即将字符串中'.'之前和'Mod'之后的字符舍去,剩余字符赋值给t;
33 break
34 elif evt.key() == eval(i):
35 t = i.split('_')[-1] #将序列中'_'前的字符舍去,并赋值给t
36 break
37 else:
38 t = evt.text()
39 self.label.setText("按键:"+t)
40 self.label.adjustSize()
41
42
43
44 app = QtWidgets.QApplication(sys.argv)
45
46 window = Mywindow()
47 window.resize(500,500)
48 window.move(350,150)
49 window.setWindowTitle("欢迎光临")
50 window.grabKeyboard()
51
52 # window.setMouseTracking(True)
53 window.show()
54
55 sys.exit(app.exec_())
56
57

另外,判断 组合功能键可以用:

if evt.modifiers() == Qt.ControlModifier | Qt.ShiftModifier  and evt.key() == Qt.Key_S:

来判断是否按下了 “Ctrl+Shift+S"组合键

按键显示器(判断键盘监听器获得的值为普通Key还中modifiers)的更多相关文章

  1. js获取及判断键盘按键的方法

    这篇文章主要介绍了js获取及判断键盘按键的方法,涉及JavaScript键盘事件的获取及键值的判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下   本文实例讲述了js获取及判断键盘按键的方法.分享 ...

  2. 操作系统学习笔记10 | I/O、显示器与键盘

    从这一部分开始介绍操作系统的设备驱动,操作系统通过文件系统的抽象驱动设备让用户能够使用显示器.键盘等交互工具.并讲解printf和scanf是如何实现敲下键盘将字符显示到屏幕上的. 参考资料: 课程: ...

  3. WPF - 监听判断键盘组合键的按下

    对于键盘事件PreviewKeyDown.PreviewKeyUp.KeyDown.KeyUp,在其中检查当次事件是哪个按键触发的很简单,只需要判断KeyEventArgs类型的事件参数e的Key属性 ...

  4. Java学习-030-JSON 之四 -- 判断 JSONObject 是否包含键值对

    前文对获取 JSON 数据封装方法,使之可通过类似于 cssSelector 的方法获取 JSON 数据,使获取数据变得简单.敬请参阅:模仿 cssSelector 封装读取 JSON 数据方法. 在 ...

  5. GUI按键绑定到键盘和打印组件

    首先说明一点 按键绑定到键盘和设置快捷键是不一样的 按键绑定键盘是按键有了和button一样的功能,没有焦点时也能使用(WHEN_IN_FOCUSED_WINDOW),甚至有时候单独作为一个事件(有自 ...

  6. ios如何判断键盘是否已经显示

    ios如何判断键盘是否已经显示   在群里看到有人问:ios如何判断键盘已经显示在界面上. 其实这个解决很简单: 写一个单例来管理键盘的状态. 这个单例在初始化方法init种监听2个事件,分别是 UI ...

  7. Python enum 枚举 判断 key(键) 或者 value(值)是否在枚举中

    Python enum 枚举 判断 key(键) 或者 value(值)是否在枚举中 python 的基本用法请浏览:https://www.cnblogs.com/ibingshan/p/98564 ...

  8. 通过键盘控制改变物体transform值

    通过键盘控制改变物体transform值 private Vector3 trans; //使用Rotate绕y 轴旋转 transform.Rotate(new Vector3(0,Input.Ge ...

  9. SQLServer判断指定列的默认值是否存在,并修改默认值

    SQLServer判断指定列的默认值是否存在,并修改默认值 2008年10月21日 星期二 下午 12:08 if exists(select A.name as DefaultName,B.name ...

随机推荐

  1. Go - 实现项目内链路追踪

    为什么项目内需要链路追踪?当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪. 从图中可以清晰的看出他们之间的调用关系,通过一个例子说明下链路 ...

  2. Spark:常用transformation及action,spark算子详解

    常用transformation及action介绍,spark算子详解 一.常用transformation介绍 1.1 transformation操作实例 二.常用action介绍 2.1 act ...

  3. CentOS 7 部署redis

    1.下载redis: 地址:http://download.redis.io/releases/: 选择需要下载的版本,然后通过ssh工具导入到centos中,这里放到了/usr/local; 解压文 ...

  4. TypeScript中的private、protected

    首先我们要清楚 private . protected 现阶段只是javascript中的保留字(Reserved words),而非关键字(Keywords ).因此TypeScript中的纯类型声 ...

  5. Sqoop import export参数

    通用参数 import export 通用通用参数选项     含义说明–connect     指定JDBC连接字符串–connection-manager     指定要使用的连接管理器类–dri ...

  6. CF1462-C. Unique Number

    题意: 给出一个数字x,让你找出一个由1到9这九个数字组成的数字,这个数字的每一位加起来等于x,并且1到9每个数字只能出现一次.若能找到这样的数字,输出这其中最小的一个,否则输出-1. 思路: 利用二 ...

  7. XV6学习(14)Lab fs: File system

    代码在github上. 这次实验是要对文件系统修改,使其支持更大的文件以及符号链接,实验本身并不是很复杂.但文件系统可以说是XV6中最复杂的部分,整个文件系统包括了七层:文件描述符,路径名,目录,in ...

  8. 2.hello rabbitmq

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-07-22 22:49:50 星期一 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  9. Linux POSIX共享内存方法&ipcs &struct shmid_ds

    内容是主进程创建子进程计算斐波那契数列. 其中计算到第几项是有主进程命令行输入. 共享内存段,并且查看了一些信息. 参考操作系统概念第七版 3.10,3.11 关于LINUX C库函数 中的 fpri ...

  10. POJ 3415 Common Substrings(后缀数组 + 单调栈)题解

    题意: 给两个串\(A.B\),问你长度\(>=k\)的有几对公共子串 思路: 先想一个朴素算法: 把\(B\)接在\(A\)后面,然后去跑后缀数组,得到\(height\)数组,那么直接\(r ...