zoukankan      html  css  js  c++  java
  • PyQt5Day18--输入控件QPlainTextEdit纯文本输入

    1、QPlainTextEdit简介

      继承于QAbstractScrollArea

      描述与QTextEdit的一些差异见下图所示。

      功能作用的框架如下:

    2、功能作用——占位提示文本

    (1)框架

    (2)功能操作及展示

    1 def 占位提示文本(self):
    2     self.pte.setPlaceholderText("请输入你的个人信息")
    3     print(self.pte.placeholderText()) # 查看

    3、功能作用——只读设置

    (1)框架

    (2)功能操作及展示

    1 def 只读设置(self):
    2     self.pte.setReadOnly(True)
    3     print(self.pte.isReadOnly())

    4、功能作用——格式

    (1)框架

    (2)操作及展示

    1 def 格式(self):
    2     tcf = QTextCharFormat()
    3     tcf.setFontUnderline(True)
    4     tcf.setUnderlineColor(QColor(200,100,100))
    5     self.pte.setCurrentCharFormat(tcf)

    5、功能作用——转换行模式

    (1)框架

    (2)操作及展示

    1 def 转换行模式(self):
    2     print(self.pte.lineWrapMode())
    3     self.pte.setLineWrapMode(QPlainTextEdit.NoWrap) # 设置为不换行(水平滚动条)

    6、功能作用——覆盖模式

    (1)框架

    (2)操作及展示(不覆盖中文)

    1 def 覆盖模式(self):
    2     self.pte.setOverwriteMode(True)
    3     print(self.pte.overwriteMode())

    7、功能作用——Tab控制

    (1)框架

    (2)操作及展示

    1 def tab控制(self):
    2     self.pte.setTabChangesFocus(False) # tab切换焦点
    3     self.pte.setTabStopDistance(100)

    8、功能作用——文本操作

    (1)框架

    (2)操作及展示

    1 def 文本操作(self):
    2     self.pte.setPlainText("明天,你好")
    3     self.pte.setPlainText("hello,world!") # 覆盖掉上面一个
    4     self.pte.insertPlainText("不会覆盖") # 不覆盖上面的
    5     # self.pte.appendPlainText("<a herf='https://www.cnblogs.com/fengxb1213/'>博客</a>") # 普通文本形式
    6     self.pte.appendHtml("<a herf='https://www.cnblogs.com/fengxb1213/'>博客</a>") # HTML格式

     9、功能作用——块操作

    (1)框架

    (2)操作及展示

    1 def 块操作(self):
    2     print(self.pte.blockCount())
    3     self.pte.setMaximumBlockCount(3) # 设置最大块数
    4     print(self.pte.toPlainText()) # 查看内容

    10、功能作用——常用编辑操作

    (1)框架

    (2)操作及展示

    1 def 常用编辑操作(self):
    2     # 有很多类似的操作参考QTextEdit里面的
    3 
    4     # 放大缩小
    5     self.pte.zoomIn(5) # 默认为1,大于0放大,小于0缩小
    6     # self.pte.zoomOut() # 与zoomIn刚好相反(过期,不建议用)

    11、功能作用——滚动

    (1)框架

    (2)操作及展示

    1 def 滚动(self):
    2     # self.pte.centerCursor() # 将内容滚动到中间
    3     self.pte.ensureCursorVisible() # 确保光标可见
    4     self.pte.setFocus()

    12、功能作用——光标

    (1)框架

    QTextCursor.MoveOperation的一些选择:

      
    (2)操作及展示

     1 def 光标操作(self):
     2     # tc = self.pte.textCursor()
     3     # tc.insertImage("xxx.png")
     4     # tc.insertTable(5,6)
     5 
     6     # 在光标位置插入内容
     7     # tc = self.pte.cursorForPosition(QPoint(100,60))
     8     # tc.insertText("itlike")
     9 
    10     # 设置光标的宽度
    11     # self.pte.setCursorWidth(20)
    12 
    13     # 光标移动(参考之前的)
    14     self.pte.moveCursor(QTextCursor.End,QTextCursor.KeepAnchor) # 光标移动到末尾并选中内容

    13、信号

    (1)框架

    (2)操作及展示

    1 def 信号的操作(self):
    2     # self.pte.textChanged.connect(lambda :print("内容发生了改变"))
    3     # self.pte.cursorPositionChanged.connect(lambda :print("光标位置发生了改变"))
    4     # self.pte.blockCountChanged.connect(lambda val:print("块的个数发生了改变",val))
    5     # self.pte.selectionChanged.connect(lambda :print("选中的内容发生了改变",self.pte.textCursor().selectedText()))
    6     # self.pte.modificationChanged.connect(lambda val:print("修改的状态发生了改变",val))
    7     # doc = self.pte.document()
    8     # doc.setModified(False)
    9     self.pte.updateRequest.connect(lambda rect,dy:print("内容区域更新",rect,dy))
     1 # *******************案例**********************开始
     2 from PyQt5.Qt import *
     3 
     4 class Window(QWidget):
     5     def __init__(self):
     6         super().__init__()
     7         self.setWindowTitle("QPlainTextEdit")
     8         self.resize(500, 500)
     9         self.setup_ui()
    10 
    11     def setup_ui(self):
    12         pte = QPlainTextEdit(self)
    13         pte.resize(300,300)
    14         pte.move(100,100)
    15         self.pte = pte
    16 
    17         test_btn = QPushButton(self)
    18         test_btn.move(20,20)
    19         test_btn.setText("测试按钮")
    20         test_btn.clicked.connect(self.btn_test)
    21 
    22         # 展示行号
    23         line_num_parent = QWidget(self)
    24         line_num_parent.resize(30,300)
    25         line_num_parent.move(70,100)
    26         line_num_parent.setStyleSheet('background-color:cyan')
    27 
    28         self.line_label = QLabel(line_num_parent)
    29         self.line_label.move(0,5)
    30         # 1-100
    31         line_nums = "
    ".join([str(i) for i in range(1,101)])
    32         self.line_label.setText(line_nums)
    33         self.line_label.adjustSize()
    34 
    35     def btn_test(self):
    36         self.信号的操作()
    37 
    38     def 信号的操作(self):
    39         self.pte.updateRequest.connect(lambda rect,dy:
    40             self.line_label.move(self.line_label.x(),self.line_label.y()+dy))
    41 
    42 if __name__ == '__main__':
    43     import sys
    44     app=QApplication(sys.argv)
    45     window=Window()
    46     window.show()
    47     sys.exit(app.exec_())
    48 # *******************案例**********************结束
  • 相关阅读:
    老毛桃PE修改方法(屏蔽更改主页,屏蔽加装的绿色浏览器)
    老毛桃winpe优盘启动系统个性修改全攻略
    SQL2000和SQL2005和SQL2008同时安装问题
    基于FFmpeg的音频编码(PCM数据编码成AAC android)
    springboot + mybatis +easyUI整合案例
    spring thymeleaf 自定义标签
    速度挑战
    兼顾pc和移动端的textarea字数监控的实现方法
    CSS3+JS 实现的便签应用
    JavaScript实现碰撞检测(分离轴定理)
  • 原文地址:https://www.cnblogs.com/fengxb1213/p/12652195.html
Copyright © 2011-2022 走看看