首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >textedit的Pyside按键事件

textedit的Pyside按键事件
EN

Stack Overflow用户
提问于 2013-01-31 19:58:54
回答 2查看 4.4K关注 0票数 0

我有两个QTextEdit窗口小部件,我需要将第一到第二个窗口中输入的内容放在按enter键(Return)上。我无法实现它,请帮帮忙?

我知道我需要使用KeyPressEvent,但我不知道如何只在QTextEdit上使用它?

代码语言:javascript
复制
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)

感谢任何帮助,我被卡住了.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-01 12:34:04

下面是一个显示QLineEdit及其returnPressed信号的小示例。按return时,QLineEdit中的文本将被追加到QTextEdit

代码语言:javascript
复制
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_())
票数 1
EN

Stack Overflow用户

发布于 2013-01-31 22:08:53

使用(从QAbstractScrollArea继承的) viewportEvent

代码语言:javascript
复制
    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,则需要使用

代码语言:javascript
复制
self.connect(self.textEdit, SIGNAL("viewportEvent(event)"), self.copy_the_text)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14625245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档