2017-03-24 13 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を使うことができますし、今はフォーカスが入っているテキストエディットでのみアクティブになります。あなたが行動を変更したい場合はここを見に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_()) 
関連する問題