文章目录
- 1、 简介
- 2、功能实现
1、 简介
QTextEdit 有的时候会需要在按 Enter 案件的时候,进行一定的事件操作。
但是QTextEdit 本身没有这样的 接口,所以我们 需要自定义组件。
如下图:
当我们 QTextEdit 点击 Enter 的时候,会执行相应操作
2、功能实现
- 主界面 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控件中按下回车就发送消息