# 收集用户的键盘指令输入
##############################################
#
# 现在需求:
# 创建键盘快捷方式
# 当控件收到焦点时开始录制,并在用户释放最后一个关键字一秒钟之后结束录制
#
#
# 解决方法:
# QKeySequenceEdit 继承自QWidget
#
#############################
from PyQt5.Qt import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QKeySequenceEdit_快捷键')
self.resize(500,500)
self.iniUI()
##############################################键序列编辑器 基本操作
#
# kse = QKeySequenceEdit() 创建一个键序列编辑器对象
# ks = QKeySequence(Qt.CTRL+Qt.Key_A) 创建一个键序列对象
# kse.setKetSequence(ks) 将键序列对象设置到键序列编辑器上
#
#
# kse.keySequence() 返回键序列对象ks
# ks.toString() 返回键序列对象的字符串
# ks.count() 返回键序列对象的个数
#
def iniUI(self):
kse = QKeySequenceEdit(self)
# ks = QKeySequence('ctrl+a')
ks = QKeySequence(Qt.CTRL + Qt.Key_A)
kse.setKeySequence(ks)
# print(ks.toString())
sds = kse.keySequence()#上面在编辑器kse上面设置了ks对象, 现在kse.keySequence()返回ks对象
print(sds.toString())
#############################键序列编辑器 基本操作
##############################################键序列编辑器 信号相关
#
#
# editingFinished 结束编辑时 发射的信号
# keySequenceChanged 键序列改变 发射的信号
btn = QPushButton(self)
self.btn = btn
self.btn_w = self.width() / 3
self.btn_h = self.height() * 3 / 32
self.btn.resize(self.btn_w, self.btn_h)
self.btn_x = (self.width() - self.btn_w) / 2
self.btn_y = self.height() * 7 / 8 + (self.height() / 8 - self.btn_h) / 2
self.btn.setText('信号测试')
self.btn.setStyleSheet('font-size:30px')
self.btn.move(self.btn_x, self.btn_y)
self.btn.clicked.connect(lambda :print(kse.keySequence().toString(),kse.keySequence().count()))
kse.editingFinished.connect(lambda :print('总是会在一秒钟之后编辑结束,发射信号'))
kse.keySequenceChanged.connect(lambda ks_obj:print('键序列改变',ks_obj.toString()))
#############################键序列编辑器 信号相关
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
小白学习笔记,感兴趣的话,欢迎骚扰……!