检测 Ctrl+S 离子 QTextedit?
Detect Ctrl+S ion QTextedit?
所以,我正在制作一个用于编辑文本文件的 QTextEdit。我用按钮加载和保存工作正常。但是我养成了每次在文本编辑器中粘贴内容时按 Ctrl+S 保存的习惯,因为我以前在记事本中使用过。所以我一直在努力实现它。但我无法全神贯注于如何检测和执行我的保存功能。让我们称之为 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,虽然我只是喜欢一般的解释,所以我可以将它应用到任何组合。
您或许可以使用 QShortcut,现在它只会在文本编辑处于焦点时激活。如果您想更改行为,请查看 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_())
使用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_())
所以,我正在制作一个用于编辑文本文件的 QTextEdit。我用按钮加载和保存工作正常。但是我养成了每次在文本编辑器中粘贴内容时按 Ctrl+S 保存的习惯,因为我以前在记事本中使用过。所以我一直在努力实现它。但我无法全神贯注于如何检测和执行我的保存功能。让我们称之为 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,虽然我只是喜欢一般的解释,所以我可以将它应用到任何组合。
您或许可以使用 QShortcut,现在它只会在文本编辑处于焦点时激活。如果您想更改行为,请查看 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_())
使用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_())