云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

第23天 | 28天学会PyQt5,多行文本框

jxf315 2024-12-17 14:08:19 教程文章 29 ℃

多行文本输入框QTextEdit可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条,还可以用来显示HTML文档。

多行文本框常用事件类型如下表所示。

方法

描述

setPlainText()

设置多行文本框的文本内容

toPlainText()

返回多行文本框的文本内容

setHtml()

设置多行文本框的文本内容为HTML文档

toHtml()

返回多行文本框的HTML内容

clear()

清除多行文本框的内容

QApplication类有一个静态方法clipboard()返回QClipboard对象,对剪切板对象的引用,任何类型的MimeData都可以从剪切板复制或粘贴。

QClipboard类中的常用方法如表。

方法

描述

clear()

清空剪切板的内容

setImage()

将QImage对象复制到剪切板中

setMimeData()

将MIME数据设置为剪切板

setPixmap()

从剪切板中复制Pixmap对象

setText()

从剪切板中复制文本

text()

从剪切板中检索文本

程序清单:textedit.py

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget, 
  QTextEdit, \QPushButton, QHBoxLayout, QVBoxLayout, QLabel, QMessageBox


# 继承QWidget
class TextEditWidget(QWidget):
    text_edit = None

    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        # 垂直布局
        v_box = QVBoxLayout()
        # 建议
        suggest_box = QHBoxLayout()
        self.text_edit = QTextEdit()
        self.text_edit.setPlaceholderText("你的建议,是我们前进的动力")
        suggest_box.addWidget(QLabel("建议:"))
        suggest_box.addWidget(self.text_edit)
        suggest_box.setStretch(1, 1)
        v_box.addLayout(suggest_box)
        # 复制、粘贴、清空和提交按钮
        button_box = QHBoxLayout()
        copy_btn = QPushButton("复制")
        copy_btn.clicked.connect(self.copy)
        paste_btn = QPushButton("粘贴")
        paste_btn.clicked.connect(self.paste)
        clear_btn = QPushButton("清空")
        clear_btn.clicked.connect(self.clear)
        submit_btn = QPushButton("提交")
        submit_btn.clicked.connect(self.submit)
        button_box.addWidget(copy_btn)
        button_box.addWidget(paste_btn)
        button_box.addWidget(clear_btn)
        button_box.addWidget(submit_btn)
        button_box.addWidget(QLabel(), 1)
        button_box.setContentsMargins(40, 0, 0, 0)
        v_box.addLayout(button_box)
        self.setLayout(v_box)
        # 调整窗口大小
        self.resize(900, 500)
        # 窗口居中
        self.center()
        # 窗口标题
        self.setWindowTitle("多行文本输入框的应用")
        # 显示窗口
        self.show()

    # 拷贝
    def copy(self):
        text = self.text_edit.toPlainText()
        # 剪切板的文本
        clipboard = QApplication.clipboard()
        clipboard.setText(text)

    # 粘贴
    def paste(self):
        # 剪切板的文本
        clipboard = QApplication.clipboard()
        # 以Html的格式输出多行文本框,字体红色,字号6号
        self.text_edit.setHtml(clipboard.text())

    # 清空
    def clear(self):
        self.text_edit.clear()

    # 提交
    def submit(self):
        text = self.text_edit.toPlainText()
        if text.strip() == "":
            self.text_edit.setFocus()
            QMessageBox.warning(self, "内容为空", 
                                "建议空空如也,请输入你的宝贵意见", 
                                QMessageBox.Ok)
        else:
            QMessageBox.information(self, "提交成功", 
                                    "你的宝贵意见,我们收到了,谢谢你", 
                                    QMessageBox.Ok)

    # 实现居中
    def center(self):
        f = self.frameGeometry()
        c = QDesktopWidget().availableGeometry().center()
        f.moveCenter(c)
        self.move(f.topLeft())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = TextEditWidget()
    sys.exit(app.exec_())

运行程序之后,弹出的窗口如下:

好了,多行文本框的内容就说到这了,关注我,下一节更精彩。

码字不易,你的关注和转发是对我最大的鼓励,谢谢!

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!

#python##程序员##好平台好讲师##桌面##热门#

最近发表
标签列表