一个祸害我很久的东东——事件过滤器之按键触发
生活随笔
收集整理的這篇文章主要介紹了
一个祸害我很久的东东——事件过滤器之按键触发
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一個禍害我很久的東東——事件過濾器之按鍵觸發(fā)
下面這個東東其實很常見,也很實用,平時上網(wǎng)的時候?qū)χ?jīng)常見,以為很簡單,當(dāng)然弄懂后,其實發(fā)現(xiàn),他確實蠻簡單的,但就是這小東西害了我好久好久啊。。。。
就是在很多頁面中,我們按下特定的鍵就會觸發(fā)特定的功能,如果是按下按鈕的話,其實還蠻簡單的,但是,比如當(dāng)你輸入在輸入銀行卡號的時候,尤其是電話輸入的時候,沒有界面上的按鈕讓你按,一般銀行是“請輸入銀行卡號,以#結(jié)束”,當(dāng)然我不知道,銀行用的是什么系統(tǒng),我只是說自己模擬這個功能的時候,發(fā)現(xiàn)其實還蠻傷腦筋的。。。
不多說,先上代碼再解釋:
?
from PyQt4 import QtCore,QtGuiclass MainWindow(QtGui.QMainWindow):def __init__(self):super(MainWindow, self).__init__()self.edit = QtGui.QTextEdit(self)self.edit.installEventFilter(self) #這句是關(guān)鍵的關(guān)鍵,以前就是少了這句折騰了老半天。。。。self.edit.insertPlainText('Please press the enter to input!\n') #提示用戶按下Enter鍵輸入self.edit.setReadOnly(True) #我將Text編輯器設(shè)為了只讀 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+'\n') #將用戶輸入的東東插入到text中return QtGui.QWidget.eventFilter(self,widget,event)if __name__ == '__main__':import sysapp = QtGui.QApplication(sys.argv)window = MainWindow()window.setGeometry(500,300,500,200)window.show()sys.exit(app.exec_())這里其實不設(shè)置只讀的話就可以輸入了,好像是畫蛇添足了,但是是為了說明一下eventFliter的功能呀!
再次上圖(鄙視那些不上圖的!)
初始ui:
按下Enter健并輸入東東:
效果圖:
?
最后提一點:那個大大的Enter鍵(筆記本上好像只有一個,臺式機(jī)上有兩個)是QtGui.Qt.Key_Return,在臺式機(jī)上,右下角的Enter鍵對應(yīng)的才是QtGui.Qt.Key_Enter
posted on 2014-09-08 16:03 施小喵 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/shixiaomiao/p/3961454.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的一个祸害我很久的东东——事件过滤器之按键触发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GROUP与HAVING的使用
- 下一篇: 设计模式之-观察者模式(Observer