zoukankan      html  css  js  c++  java
  • 一个祸害我很久的东东——事件过滤器之按键触发

    下面这个东东其实很常见,也很实用,平时上网的时候对之经常见,以为很简单,当然弄懂后,其实发现,他确实蛮简单的,但就是这小东西害了我好久好久啊。。。。

    就是在很多页面中,我们按下特定的键就会触发特定的功能,如果是按下按钮的话,其实还蛮简单的,但是,比如当你输入在输入银行卡号的时候,尤其是电话输入的时候,没有界面上的按钮让你按,一般银行是“请输入银行卡号,以#结束”,当然我不知道,银行用的是什么系统,我只是说自己模拟这个功能的时候,发现其实还蛮伤脑筋的。。。

    不多说,先上代码再解释:

    from PyQt4 import QtCore,QtGui
    
    class MainWindow(QtGui.QMainWindow):
        def __init__(self):
            super(MainWindow, self).__init__()
            self.edit = QtGui.QTextEdit(self)
            self.edit.installEventFilter(self)    #这句是关键的关键,以前就是少了这句折腾了老半天。。。。
            self.edit.insertPlainText('Please press the enter to input!
    ') #提示用户按下Enter键输入
            self.edit.setReadOnly(True) #我将Text编辑器设为了只读
            self.setCentralWidget(self.edit)
            self.setWindowTitle('EventFilter')
    
        def eventFilter(self, widget, event):
            if event.type() == QtCore.QEvent.KeyPress:
                key = event.key()
                if key ==  QtCore.Qt.Key_Return:
                    text,ok = QtGui.QInputDialog.getText(self,"title","Please write the sentence you want to say to me" )
                    if ok and text != '':
                        self.edit.insertPlainText(text+'
    ')  #将用户输入的东东插入到text中
            return QtGui.QWidget.eventFilter(self,widget,event)
    
    if __name__ == '__main__':
        import  sys
        app = QtGui.QApplication(sys.argv)
        window = MainWindow()
        window.setGeometry(500,300,500,200)
        window.show()
        sys.exit(app.exec_())

    这里其实不设置只读的话就可以输入了,好像是画蛇添足了,但是是为了说明一下eventFliter的功能呀!

    再次上图(鄙视那些不上图的!)

    初始ui:

    按下Enter健并输入东东:

    效果图:

    最后提一点:那个大大的Enter键(笔记本上好像只有一个,台式机上有两个)是QtGui.Qt.Key_Return,在台式机上,右下角的Enter键对应的才是QtGui.Qt.Key_Enter

  • 相关阅读:
    DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
    DVWA 黑客攻防演练(九) SQL 盲注 SQL Injection (Blind)
    DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
    DVWA 黑客攻防演练(七)Weak Session IDs
    DVWA 黑客攻防演练(六)不安全的验证码 Insecure CAPTCHA
    DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
    工作流表结构设计
    Visual Studio 2019尝鲜----新建空项目体验
    《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
    .NET快速开发平台的在线预览
  • 原文地址:https://www.cnblogs.com/shixiaomiao/p/3961454.html
Copyright © 2011-2022 走看看