PyQt5_QKeySequenceEdit_键序列编辑器


# 收集用户的键盘指令输入
##############################################

#
# 现在需求:
#           创建键盘快捷方式
#           当控件收到焦点时开始录制,并在用户释放最后一个关键字一秒钟之后结束录制
#
#
# 解决方法:
#           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_())

小白学习笔记,感兴趣的话,欢迎骚扰……!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5中,_del_是一个特殊的方法,用于对象的删除和垃圾回收。当一个对象的引用计数降为零时,_del_方法会被调用。然而,存在一些情况下,当应用程序使用_pyqt5.pyd时,调用_del_方法时可能会导致闪退。闪退的原因可能有以下几点: 1. 对象的引用计数错误:如果对象的引用计数不正确地被管理或跟踪,可能会导致调用_del_方法时出现内存访问错误,从而导致闪退。 2. PySide2内存管理问题:在使用PySide2时,由于其与Qt的集成方式不同,可能存在内存管理方面的问题,可能导致闪退。 3. PyQt5版本不兼容:如果使用的PyQt5版本与其他依赖库或Python版本不兼容,可能会导致调用_del_方法时出现闪退。 为了解决这个问题,可以尝试以下几点: 1. 检查代码逻辑:确保正确管理对象的引用计数,尽可能避免在_del_方法中进行复杂的操作,以减少闪退的可能性。 2. 更新到最新版本的PyQt5:确保使用的PyQt5版本与其他依赖库和Python版本兼容,并从官方网站或PyPi上下载最新版本的PyQt5。 3. 使用其他版本的Qt绑定库:考虑尝试使用其他的Qt绑定库,如PySide2,看是否可以解决闪退的问题。 总结而言,PyQt5 _del_方法闪退的原因可能是对象引用计数错误、PySide2内存管理问题或PyQt5版本不兼容等。为了解决这个问题,可以考虑检查代码逻辑,更新到最新版本的PyQt5,或尝试使用其他的Qt绑定库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值