簡體   English   中英

textedit的Pyside按鍵事件

[英]Pyside keypress event for textedit

我有2個QTextEdit小部件,我需要按下回車鍵( Return )按第一個到第二個輸入的內容....我無法實現它請幫忙嗎?

我知道我需要使用KeyPressEvent但我不明白如何僅將它用於QTextEdit

self.textEdit = QtGui.QTextEdit(self.widget)
self.textEdit.setMinimumSize(QtCore.QSize(201, 291))
self.textEdit.setMaximumSize(QtCore.QSize(201, 291))
self.textEdit.setObjectName("textEdit")
self.textEdit.setReadOnly(True)
self.verticalLayout.addWidget(self.textEdit)

self.textEdit_2 = QtGui.QTextEdit(self.widget)
self.textEdit_2.setMinimumSize(QtCore.QSize(201, 41))
self.textEdit_2.setMaximumSize(QtCore.QSize(201, 41))
self.textEdit_2.setObjectName("textEdit_2")
self.textEdit_2.setFocusPolicy(Qt.StrongFocus)
self.verticalLayout.addWidget(self.textEdit_2)

任何幫助,我很感激.....

使用viewportEvent (繼承自QAbstractScrollArea

    self.textEdit.viewportEvent.connect(self.copy_the_text)

    def copy_the_text(self, event):
        if isinstance(event, QtGui.QKeyEvent):  # as viewportEvent gets *all* events
            if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter:
                # copy the text from textEdit to textEdit_2

你可以使用Qt.Key_Enter但我想你可能想要Qt.Key_Return

編輯

如果您使用舊版本的PySide而沒有新的樣式信號和插槽,則需要使用

self.connect(self.textEdit, SIGNAL("viewportEvent(event)"), self.copy_the_text)

這是一個顯示QLineEdit及其returnPressed信號的小例子。 按下返回后, QLineEdit的文本將附加到QTextEdit

import sys
from PySide import QtGui

class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)

        self.output = QtGui.QTextEdit()
        self.output.setReadOnly(True)

        self.input = QtGui.QLineEdit()
        self.input.returnPressed.connect(self.addInput)
        self.input.setPlaceholderText('input here')

        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.output)
        layout.addWidget(self.input)

    def addInput(self):
        # skip empty text
        if self.input.text():
            self.output.append(self.input.text())
        # clear the QLineEdit for new input
        self.input.clear()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    w = Window()
    w.show()

    sys.exit(app.exec_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM