PyQt5 QTextEdit添加 Enter 按钮 监听事件

1、 简介

QTextEdit 有的时候会需要在按 Enter 案件的时候,进行一定的事件操作。
但是QTextEdit 本身没有这样的 接口,所以我们 需要自定义组件。
如下图:
当我们 QTextEdit 点击 Enter 的时候,会执行相应操作
在这里插入图片描述

2、功能实现

  1. 主界面 testEdit.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.12.2
#
# WARNING! All changes made in this file will be lost!
import sys

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication

from myTextEdit import  myTextEdit


class Ui_MainWindow(QMainWindow):
    def __init__(self ):
        super().__init__()
        self.setObjectName("self")
        self.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(160, 30, 160, 80))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
       # self.textEdit = QtWidgets.QTextEdit(self.verticalLayoutWidget) # 这里替换自己定义的 QTextView
        self.textEdit = myTextEdit(self.verticalLayoutWidget)
        self.textEdit.setObjectName("textEdit")
        self.textEdit.setText("Hello")
        self.verticalLayout.addWidget(self.textEdit)
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 19))
        self.menubar.setObjectName("menubar")
        self.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)

        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)

    def retranslateUi(self):
        _translate = QtCore.QCoreApplication.translate
        self.setWindowTitle(_translate("MainWindow", "MainWindow"))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = Ui_MainWindow()
    win.show()
    sys.exit(app.exec_())

2)自定义的QTextEdit文件

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt


class myTextEdit(QtWidgets.QTextEdit): #继承 原本组件
    def __init__(self,parent):
        QtWidgets.QTextEdit.__init__(self)
        self.parent = parent

    def keyPressEvent(self, event):
        QtWidgets.QTextEdit.keyPressEvent(self,event)
        print('press',event)
        if event.key() == Qt.Key_Return: #如果是Enter 按钮
            print('success press enter key',self.toPlainText())

文件参考:
PyQt5如何在QTextEdit控件中按下回车就发送消息
https://blog.csdn.net/akyamaaa/article/details/83788429

发布了354 篇原创文章 · 获赞 114 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/qq_27061049/article/details/101550616