【问题标题】:Detect Ctrl+S ion QTextedit?检测 Ctrl+S 离子 QTextedit?
【发布时间】:2017-11-30 18:29:02
【问题描述】:

所以,我正在制作一个编辑文本文件的 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,虽然我只是喜欢一个一般性的解释,所以我可以将它应用于任何组合。

【问题讨论】:

    标签: python python-3.x pyqt pyqt5 qtextedit


    【解决方案1】:

    使用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_())
    

    【讨论】:

      【解决方案2】:

      您可能可以使用 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_())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-27
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多