继承 QObject-->QWidget-->QFrame-->QAbstractScrollArea-->QTextEdit
QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条,Qtextedit不仅可以用来显示文本还可以用来显示HTML4文档,图像,表格
任何一个文本编辑器的程序都要用到QTextEdit作为输入文本的容器,在它里面输入的可编辑文本由QTextDocument作为载体
文本:
importsysfrom PyQt5.QtWidgets importQApplication, QWidget,QTextEditfrom PyQt5.QtGui importQTextCharFormatclassDemo(QWidget):def __init__(self):
super().__init__()
self.resize(300,300)
t= QTextEdit('我爱学习', self) #创建多行文本对象
#参数1 显示的文本
#参数2 父控件
#注意 光标在0位置
t.setPlaceholderText('占位提示') #在文本框内部内容为空时, 给用户的文本提示信息
s=t.placeholderText() #返回占位提示信息
t.setPlainText('我爱我的祖国') #设置普通文本,原来的文本被覆盖掉
#注意 光标在0位置
t.insertPlainText(',我想为祖国做点贡献') #在光标处插入普通文本
#会自动移动光标
s=t.toPlainText() #返回文本框的文本内容-纯文本
t.setHtml('
我爱我的祖国
') #设置HTML文本-富文本,原来的文本被覆盖掉#注意 光标在0位置
t.insertHtml('
,我想为祖国做点贡献
') #在光标处插入HTML文本-富文本#会自动移动光标
s=t.toHtml() #返回文本框的文本内容-富文本
t.setText('
我爱我的祖国
') #设置文本-自动判断是普通文本还是富文本#注意 光标在0位置 原来的文本被覆盖掉
#t.append(',我想为祖国做点贡献') #在尾部追加文本-自动采用前面的文本格式,自动判断是普通文本还是富文本
#t.clear() #清空文本
tc=t.textCursor() #获取文本光标对象->QTextCursor
#利用文本光标对象插入文本-格式一
tc.insertText('中国人') #在光标处插入文本,自动判断格式
#自动移动光标
#利用文本光标对象插入文本-格式二-带字体
tcf=QTextCharFormat() #创建文本字符格式对象
tcf.setToolTip('楷体') #当鼠标在这个字体上悬停时的提示信息
tcf.setFontFamily('李明') #设置字体
tcf.setFontPointSize(30) #设置字体大小
tc.insertText('天津',tcf)#参数2 可选-字体
#利用文本光标对象插入HTML文本
tc.insertHtml('
塘沽
')#自动移动光标#print(s)
if __name__ == '__main__':
app=QApplication(sys.argv)
demo=Demo()
demo.show()
sys.exit(app.exec_())
利用文本光标对象插入图片:
importsysfrom PyQt5.QtWidgets importQApplication, QWidget,QTextEdit,QPushButtonfrom PyQt5.QtGui importQTextCharFormat,QTextImageFormat,QTextFrameFormatclassDemo(QWidget):def __init__(self):
super().__init__()
self.resize(300,300)
t= QTextEdit('我爱学习', self)
t.setText('
我爱我的祖国
')tb=QPushButton('按钮',self)
tb.move(100,200)defA():
tc= t.textCursor() #获取文本光标对象->QTextCursor
#利用文本光标对象插入图片
tif = QTextImageFormat() #创建文本图像格式
tif.setName('大象.png') #设置图片
tif.setWidth(100) #设置图片宽度
tif.setHeight(100) #设置图片高度
tc.insertImage(tif,QTextFrameFormat.InFlow) #插入图片-非环绕
#参数2 图片位置
#QTextFrameFormat.FloatRight=2 在右边
#QTextFrameFormat.FloatLeft=1 在左边
#QTextFrameFormat.InFlow=0 在光标处
tb.clicked.connect(A)#print(s)
if __name__ == '__main__':
app=QApplication(sys.argv)
demo=Demo()
demo.show()
sys.exit(app.exec_())
利用文本光标对象插入文本片段:
importsysfrom PyQt5.QtWidgets importQApplication, QWidget,QTextEdit,QPushButtonfrom PyQt5.QtGui importQTextDocumentFragmentclassDemo(QWidget):def __init__(self):
super().__init__()
self.resize(300,300)
t= QTextEdit('我爱学习', self)
tb=QPushButton('按钮',self)
tb.move(100,200)defA():
tc= t.textCursor() #获取文本光标对象->QTextCursor
#利用文本光标对象插入文本片段
#tdf=QTextDocumentFragment.fromHtml('
我是中国人
') #创建富文本片段tdf = QTextDocumentFragment.fromPlainText('
我是中国人
') #创建普通文本片段tc.insertFragment(tdf) #在光标处插入文本片段
#自动移动光标
t.setFocus()
tb.clicked.connect(A)if __name__ == '__main__':
app=QApplication(sys.argv)
demo=Demo()
demo.show()
sys.exit(app.exec_())
列表-word的项目编号和项目符号:
importsysfrom PyQt5.QtWidgets importQApplication, QWidget,QTextEdit,QPushButtonfrom PyQt5.QtGui importQTextListFormatclassDemo(QWidget):def __init__(self):
super().__init__()
self.resize(300,300)
t= QTextEdit('我爱学习', self)
tb=QPushButton('按钮',self)
tb.move(100,200)defA():
tc= t.textCursor() #获取文本光标对象->QTextCursor
#利用文本光标对象插入列表-个人理解:word的段落编号和项目符号
#方式一
#s=tc.insertList(QTextListFormat.ListDecimal) #在当前光标处插入一个新块,并使其成为具有给定格式的新创建列表的第一个列表项。返回创建的列表
#返回值类型QTextList
#QTextListFormat.ListCircle 一个空的圆圈
#QTextListFormat.ListDisc 一个圆圈
#QTextListFormat.ListSquare 一个方块
#QTextListFormat.ListDecimal 十进制值按升序排列
#QTextListFormat.ListLowerAlpha 小写拉丁字符按字母顺序排列
#QTextListFormat.ListUpperAlpha 大写拉丁字符按字母顺序排列
#QTextListFormat.ListLowerRoman 小写罗马数字(仅支持最多4999项)
#QTextListFormat.ListUpperRoman 大写罗马数字(仅支持最多4999项)
#方式二
#tc.createList(QTextListFormat.ListDecimal) #创建并返回具有给定格式的新列表,并使当前段落是第一个列表项
#方式三
tlf=QTextListFormat()
tlf.setIndent(1) #缩进1个Tab
tlf.setNumberPrefix('>>') #前缀-放在样式前面
tlf.setNumberSuffix('<
tlf.setStyle(QTextListFormat.ListDecimal) #设置样式
#参数 参考方式一
#只有设置了样式,前缀后缀才有效果
tc.createList(tlf)
t.setFocus()
tb.clicked.connect(A)if __name__ == '__main__':
app=QApplication(sys.argv)
demo=Demo()
demo.show()
sys.exit(app.exec_())
表格:
名称:记录--一行 字段-一列
importsysfrom PyQt5.QtWidgets importQApplication, QWidget,QTextEdit,QPushButtonfrom PyQt5.QtGui importQTextTableFormat,QTextLengthfrom PyQt5.QtCore importQtclassDemo(QWidget):def __init__(self):
super().__init__()
self.resize(300,300)
t=QTextEdit(self)
tb=QPushButton('按钮',self)
tb.move(100,200)defA():
tc= t.textCursor() #获取文本光标对象->QTextCursor
#利用文本光标对象插入表格
#tt=tc.insertTable(3,2 ) #在光标处插入3行2列的表格-不带格式
#返回值类型 QTextTable
#表格不环绕单独占用行
ttf=QTextTableFormat() #创建表格格式
ttf.setAlignment(Qt.AlignRight) #设置对齐方式
ttf.setCellPadding(1) #设置内边距
ttf.setCellSpacing(1) #设置外边距
ttf.setColumnWidthConstraints((QTextLength(QTextLength.PercentageLength, 50),QTextLength(QTextLength.PercentageLength, 40))) #列宽限制
#元组
#按百分比计算
tt = tc.insertTable(3, 2,ttf) #在光标处插入3行2列的表格-带格式
#返回值类型 QTextTable
#表格不环绕单独占用行
t