2017-03-24 54 views
0

所以,我正在編輯一個編輯文本文件的QTextEdit。我用按鈕獲得了加載和保存的正常工作。但我有習慣按Ctrl + S保存每次我將東西粘貼到文本編輯器中,因爲我之前在記事本中使用過。所以我一直在試圖實現它。但我無法圍繞如何檢測和執行我的保存功能。我們稱之爲savetext檢測Ctrl + S離子QTextedit?

我一直在努力讓keyPressEvent工作,但我不明白它是如何工作的。所以我一直在努力學習它。

我沉重的簡化代碼如下所示:

class GUI(QProcess): 
    def init etc... 
     "Button creations and connect to save/load function" 
     self.textedit=QTextEdit() 

    def savetext(self): 
     code 

    def loadtext(self): 
     code 

現在,我怎樣檢測在QTextEdit被檢測到的按鍵組合,或任何在我的計劃對於這個問題,並引起它做savetext?在我的情況下,Ctrl + S,雖然我只是喜歡一般的解釋,所以我可以將它應用於任何組合。

回答

2

使用QShortcutQKeySequence

from PyQt5.QtWidgets import QApplication, QTextEdit, QShortcut 
from PyQt5.QtGui import QKeySequence 
import sys 

def slot(): 
    print("Ctrl+S") 


app = QApplication(sys.argv) 
textedit=QTextEdit() 
shortcut = QShortcut(QKeySequence("Ctrl+S"), textedit) 
shortcut.activated.connect(slot) 

textedit.show() 
sys.exit(app.exec_()) 
0

你可以使用QShortcut,現在只有在textedit焦點時纔會激活。如果你想改變的行爲,請看看here

下面是一個例子

import sys 
from PyQt4 import QtGui, QtCore 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     layout = QtGui.QVBoxLayout(self) 
     self.edit = QtGui.QTextEdit() 
     layout.addWidget(self.edit) 
     self.button = QtGui.QPushButton('Test') 
     layout.addWidget(self.button) 
     foo = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+S"), self.edit, self.saveCall, context=QtCore.Qt.WidgetShortcut) 

    def saveCall(self): 
     self.edit.append('Please save me') 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    win = Window() 
    win.show() 
    sys.exit(app.exec_())