1、字体颜色:
def 颜色设置(self):
# 设置字体背景颜色
self.te.setTextBackgroundColor(QColor(200, 20, 20))
# 设置字体颜色
self.te.textColor(QColor(10, 200, 20))
只对光标后续的文本生效,与背景无关。
2、设置当前的字符格式:
设置当前字符格式,新的会替换老的;合并当前字符格式,两者会取并集。
def 字符设置(self):
# 设置字符格式
tcf = QTextCharFormat()
tcf.setFontFamily("宋体")
# 设置首字母大写
tcf.setFontCapitalization(QFont.Capitalization)
tcf.setForeground(QColor(100, 10, 200))
self.te.setCurrentCharFormat(tcf)
tcf2 = QTextCharFormat()
tcf2.setFontOverline(True)
# 设置为新的格式
self.te.setCurrentCharFormat(tcf2)
# 合并两种格式
self.te.mergeCurrentCharFormat(tcf2)
3、常用的编辑操作:
def 常用编辑操作(self):
# 复制选中文本
# self.te.copy()
# self.te.paste()
# 选中所有内容
self.te.selectAll()
self.te.setFocus()
# 查找方法会匹配编译器中的所有内容
# 不加参数,从左往右匹配
# 从右往左查找,切区分大小写,仅仅是一个单独的单词,否则就不要
self.te.find("xx", QTextDocument.FindBackward | QTextDocument.FindCaseSensitively)
4、滚动到锚点:当文本内容较长时,可以通过代码设置滚动到指定位置,提供了一个特定的方法:滚动到锚点位置,在文本内容的某一个地方打一个标记,可以直接滚动到指定位置。
<a href='#itlike'>撩课</a>;
#是锚点标志 <a href是HTML的超链接表示。设置锚点名称。
# 设置锚点的名字'lk'
te.insertHtml("xxx"*100 + "<a name='lk' href='#itlike'>撩课</a>" + "aaa"*200)
def setup_ui(self):
te = QTextEdit("xxxxx", self)
self.te = te
te.move(50, 50)
te.resize(300, 300)
te.setStyleSheet("background-color:cyan;")
# 设置锚点的名字'lk'
te.insertHtml("xxx"*100 + "<a name='lk' href='#itlike'>撩课</a>" + "aaa"*200)
test_btn = QPushButton(self)
test_btn.move(10, 10)
test_btn.setText("按钮")
test_btn.clicked.connect(self.btn_pressed)
# self.btn_test()
def btn_pressed(self):
self.滚动到锚点()
def 滚动到锚点(self):
self.te.scrollToAnchor("lk")
5、只读属性设置:(将一个文本编译器变为一个文本浏览器)
只读操作仅限用户通过鼠标或者键盘对文本框的操作,不限制通过代码插入内容。
def 只读设置(self):
self.te.setReadOnly(True)
self.te.insertPlainText("itlike")
6、tab键位控制:
例如:界面上有好几个控件,通过tab键可以切换焦点到不同的控件上。
但是在文本框编辑器中无法确定功能:用户切换tab键是切换焦点还是在文本框中键入一个tab键位制表符。
tab键按下,移动距离为80(像素为单位)的倍数。可以通过代码改变制表位的距离。
def tab功能测试(self):
# tab键功能设置为切换焦点
self.te.setTabChangesFocus(True)
# 打印制表符的距离
print(self.te.tabStopWidth())
# 改变制表符的距离
self.te.setTabStopWidth(100)
7、打开超链接:如果锚点存在,则返回锚点位置处的超链接,如果锚点不存在,则返回空字符串。
当用户点击超链接时,打开对应的地址;故先监听文本框的点击事件,获取对应的点坐标,在判断该点坐标有没有对应的超链接,去打开对应的超链接。
当一个控件中没有鼠标点击信号,需要监听他的点击事件,则需要重写对应的事件方法,间接的监听事件点击。(重写是建立在继承的基础上)
class MyTextEdit(QTextEdit):
# 重写鼠标操作事件
def mousePressEvent(self, me):
print(me.pos())
# 获取坐标点位置所对应的锚点
link_str = self.anchorAt(me.pos())
if len(link_str) > 0:
# 通过某一个方法打开对应的地址
QDesktopServices.openUrl(QUrl(link_str))
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("QTextEdit的学习")
self.resize(500, 500)
self.setup_ui()
def setup_ui(self):
te = MyTextEdit("xxxxx", self)
self.te = te
te.move(50, 50)
te.resize(300, 300)
te.setStyleSheet("background-color:cyan;")
# 调用占位文本提示的方法
# self.占位文本的提示()
# self.文本内容的设置()
# 设置锚点的名字'lk'
#te.insertHtml("xxx"*100 + "<a name='lk' href='#itlike'>撩课</a>" + "aaa"*200)
te.insertHtml("xxx" * 30 + "<a href='http://www.itlike.com'>撩课</a>" + "aaa" * 200)
test_btn = QPushButton(self)
test_btn.move(10, 10)
test_btn.setText("按钮")
test_btn.clicked.connect(self.btn_pressed)
def 打开超链接(self):
# 通过给定一个点坐标,返回对应锚点的位置
# 监听鼠标点击事件,如果类中没有对应功能的方法
# 可以选择重写该方法
pass
8、信号的使用:
from PyQt5.Qt import *
class MyTextEdit(QTextEdit):
# 重写鼠标操作事件
def mousePressEvent(self, me):
print(me.pos())
# 获取坐标点位置所对应的锚点
link_str = self.anchorAt(me.pos())
if len(link_str) > 0:
# 通过某一个方法打开对应的地址
QDesktopServices.openUrl(QUrl(link_str))
# 保证之前的功能依然生效
return super().mousePressEvent(me)
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("QTextEdit的学习")
self.resize(500, 500)
self.setup_ui()
def text_change(self):
print("文本内容发生了改变")
def selection_change(self):
print("文本选中的内容发生了改变")
def copy_a(self, yes):
print("复制是否可用", yes)
def setup_ui(self):
te = MyTextEdit("xxxxx", self)
self.te = te
te.move(50, 50)
te.resize(300, 300)
te.setStyleSheet("background-color:cyan;")
# 监听文本内容发生改变
te.textChanged.connect(self.text_change)
te.selectionChanged.connect(self.selection_change)
te.copyAvailable.connect(self.copy_a)
te.insertHtml("xxx" * 30 + "<a href='http://www.itlike.com'>撩课</a>" + "aaa" * 200)
test_btn = QPushButton(self)
test_btn.move(10, 10)
test_btn.setText("按钮")
test_btn.clicked.connect(self.btn_pressed)
def btn_pressed(self):
pass
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = Window()
window.resize(500, 500)
window.show()
sys.exit(app.exec_())