所以,我正在制作一个编辑文本文件的QTextEdit。我用按钮加载并保存工作正常。但我习惯按 Ctrl + S 来保存每次我将东西粘贴到textedit中,因为我之前在记事本中使用过它。所以我一直在努力实现它。但我无法理解如何检测和执行我的保存功能。让我们称之为savetext
。
我一直在尝试让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 ,虽然我只是喜欢一般的解释,所以我可以将它应用于任何组合。
答案 0 :(得分:3)
使用QShortcut
和QKeySequence
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_())
答案 1 :(得分:1)
您可以使用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_())