Python桌面开发pyqt5—QAbstractScrollArea及子类

QLineEdit

只能输入纯文本,不能输入富文本

构造函数

  • QLineEdit(self):仅指定依附的父容器
  • QLineEdit(text, self):还指定初始文本

方法

le = QLineEdit(self)

# 设置文本
le.setText('代码输入的信息')
# 获取真实文本
print(le.text())
# 获取显示文本
print(le.displayText())
# 插入文本
le.insert('插入的文本')

# 设置占位提示文本
le.setPlaceholderText('请输入密码:')

# 设置clear按钮
le.setClearButtonEnabled(True)
# 获取是否激活clear按钮
print(le.isClearButtonEnabled())

# 设置文本输出模式
'''Normal = 0				# 默认,正常
NoEcho = 1					# 不显示,但能获取真实文本,text和displayText区别显现
Password = 2				# 显示密码圆圈
PasswordEchoOnEdit = 3		# 输入时正常,一旦结束输入就是Password'''
le.setEchoMode(QLineEdit.NoEcho)
# 获取输出模式
print(le.echoMode())

# 设置自动提示: 用户输入'北京'会出现以下提示
le.setCompleter(QCompleter(['北京大学', '北京南站', '北京交通大学'], le))

# 内容长度限制
le.setMaxLength(10)
# 获取长度限制
print(le.maxLength())

# 只读模式
le.setReadOnly(True)

# 设置编辑状态
le.setModified(False)  # 默认为True,即一直可修改
# 获取编辑状态
print(le.isModified())

光标控制

le = QLineEdit('12333313', self)

# 设置光标
le.setFocus()

# 移动光标
'''参数:
 第0个: 参数默认False(不选中),True可以选中经过的文本
 第1个: 移动的距离'''
le.cursorBackward(True, 1)  # 光标右移
le.cursorForward(True, 1)  # 光标左移
# 光标移动一个单词,按空格区分相邻单词。只需传入bool参数,不需要传入移动的长度
le.cursorWordBackward(True)  # 右移
le.cursorWordForward(True)  # 左移
# 光标移动到特殊位置
le.home(False)  # 光标移动到行首
le.end(False)  # 光标移动到行尾
le.setCursorPosition(1)  # 光标移动到指定索引。如果传入小数,向下取整

# 获取光标
print(le.cursorPosition())  # 光标位置的索引,从0开始
print(le.cursorPositionAt(QPoint(25, 0)))  # 坐标下光标指向的字符数量(从左向右计算)

文本边距和方位设置

le = QLineEdit(self)
# le.setContentsMargins(100,0,0,0)	#不用这个,这个会把整个控件尺寸改变
# 设置文本距离原点 右下左上 的距离
le.setTextMargins(0, 0, 0, 0)
# 设置文本方位位置
le.setAlignment(Qt.AlignLeft | Qt.AlignBottom)  # 左下方

在这里插入图片描述

掩码

le = QLineEdit(self)
# 需求:共4位,格式为'AA-00',左边必须为两位大写字母,右边是两位数字。
# 中间用'-'分隔。若无输入,用'*'补全
# 但如果输入数字,输入不上
le.setInputMask('>AA-99;*')	# 设置了大写字母,如果输入小写的,自动转换为大写

在这里插入图片描述

明文与密文

le = QLineEdit(self)
le.setEchoMode(QLineEdit.Password)

# 添加行为
action = QAction(le)
action.setIcon(QIcon('./resources/不可见.png'))
def func():
	if le.echoMode() == QLineEdit.Password:
		le.setEchoMode(QLineEdit.Normal)
		action.setIcon(QIcon('./resources/可见.png'))
	else:
		le.setEchoMode(QLineEdit.Password)
		action.setIcon(QIcon('./resources/不可见.png'))
action.triggered.connect(func)

# 将行为添加到le
'''参数1: 图标再le中的位置
QLineEdit.LeadingPosition: 头位置
action,QLineEdit.TrailingPosition: 末尾'''
le.addAction(action,QLineEdit.TrailingPosition)

在这里插入图片描述

常用编辑功能

le = QLineEdit(self)

# 文本拖拽
le.setDragEnabled(True)  # 设置文本内容可拖拽到其他地方

# 退格粘贴截切
le.backspace()  # 退格,删除光标左侧的一个字符或者选中的全部字符。
# 注意,若要删除选中的文本,应该用代码le.cursorBackward(True,3)选中而不能手动选中
le.del_()  # 删除光标右侧一个字符或者选中的文本,类似于上一个方法
le.clear()  # 清空所有文本,等效于setText('')
le.copy()  # 复制拷贝
le.cut()  # 剪切
le.paste()  # 粘贴
le.undo()  # 撤销
le.redo()  # 重做(反撤销)

# 获取是否能重做撤销
print(le.isUndoAvailable())  # 获取能否撤销
print(le.isRedoAvailable())  # 获取能否重做

# 设置选中
le.setSelection(1, 3)  # 选择某些文本,索引从0开始,包含最后一个
le.selectAll()  # 全选
le.deselect()  # 取消选中
# 获取选中状态
print(le.hasSelectedText())  # 获取当前是否选中了某文本
print(le.selectedText())  # 获取选中的文本内容
print(le.selectionStart())  # 获取选取的初始索引
print(le.selectionEnd())  # 获取选取的末尾索引
print(le.selectionLength())  # 获取选取的长度

系统验证器

class MyQIntValidator(QIntValidator):
	def fixup(self, p_str):
		'''如果未输入或输入的数字小于18,一旦脱标设置为18'''
		print(p_str)
		if len(p_str) == 0 or int(p_str) < 18:	# 顺序不要颠倒!
			return '18'

# 系统这个验证器不能实现修补功能,要修补就要重写类的fixup()方法
# validator = QIntValidator(18, 150)			
validator = MyQIntValidator(18, 150)
le = QLineEdit(self)
le.setValidator(validator)
# le_1: 脱标时的测试组件

输入10:在这里插入图片描述

自定义验证器

class AgeVadidator(QValidator):
    def validate(self, input_str, pos_int):
        '''重写这个方法'''
        print(input_str, pos_int)
        try:
            if 18 <= int(input_str) <= 150:
                return (QValidator.Acceptable, input_str, pos_int)
            elif 1 <= int(input_str) <= 15:
                return (QValidator.Intermediate, input_str, pos_int)
            else:
                return (QValidator.Invalid, input_str, pos_int)
        except:
            if len(input_str) == 0:
                return (QValidator.Intermediate, input_str, pos_int)
            return (QValidator.Invalid, input_str, pos_int)

    def fixup(self, p_str):
        '''重写这个方法'''
        print("xxxx", p_str)
        try:
            if int(p_str) < 18:
                return '18'
            return '180'
        except:
            return '18'


validator = AgeVadidator()
le = QLineEdit(self)
le.setValidator(validator)

在这里插入图片描述

信号

le = QLineEdit(self)

le.textEdited.connect(lambda text: print('文本正在被编辑,内容为:', text))
le.textChanged.connect(lambda text: print('文本框文本发生了改变', text))
le.returnPressed.connect(lambda: print('回车键被按下了'))
le.editingFinished.connect(lambda: print('文本编辑结束了'))
le.selectionChanged.connect(lambda: print('被选中的文本发生了改变'))
le.cursorPositionChanged.connect(lambda old_pos, new_pos: print('光标位置发生改变,位置为{},新位置为{}'.format(old_pos, new_pos)))

QTextEdit

简单方法

te = QTextEdit('默认内容', self)

# 设置占位提示文本
te.setPlaceholderText(text)
# 获取占位提示文本
print(te.placeholderText())

# 纯文本
te.setPlainText(text)  # 设置纯文本内容,光标会移动到文本最前边
te.insertPlainText(text)  # 插入
te.toPlainText()  # 获取纯文本内容

# 富文本
te.setHtml(html)  # 设置html
te.insertHtml(html)  # 插入html
te.toHtml()  # 获取html内容

# 自动判定
te.setText(content)  # 自动判定是html还是纯文本并设置
te.append(content)  # 自动判定并在末尾添加

# 文本权限
te.setReadOnly(True)  # 设置为只读
te.isReadOnly()  # 获取是否为只读
# 只读状态下代码可插入文本: 
te.insertPlainText(text)

# 文本操作
te.clear()  # 清空,等效于setText('')
print(te.document())  # 获取文档对象
print(te.textCursor())  # 获取光标对象

# 段落对齐方式(只作用于当前段落)
"""QT.AlignLeft		#靠左对齐(默认)
Qt.AlignRight		#靠右对齐
Qt.AlignCenter		#居中对齐"""
te.setAlignment(Qt.AlignCenter)

# 前后景色
te.setTextBackgroundColor(QColor(255, 0, 0))  # 设置背景颜色
te.setTextColor(QColor(0, 255, 0))  # 设置字体颜色(前景颜色)

# 让光标移动到当前te
te.setFocus()

滚动条

te = QTextEdit('哈哈哈', self)

# 滚动条显示策略
te.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)  # 竖直滚动条一直显示
te.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)  # 水平滚动条一直显示

# 设置边角(竖直和水平滚动条的右下交点)按钮
cor_btn = QPushButton(self)
cor_btn.setIcon(QIcon('./resources/unity.png'))
cor_btn.clicked.connect(lambda: print('变焦按钮被点击了'))
te.setCornerWidget(cor_btn)  						# 将按钮添加到QTextEdit控件

在这里插入图片描述

字体格式

btn_refer = QPushButton('字体选择框', self)
btn_refer.move(60, 250)

# 打开字体选择对话框
btn_refer.clicked.connect(lambda: QFontDialog.getFont())

# 使用QTextEdit下的字体设置
def func():
    te.setFontFamily('草书')  # 设置在字体类型
    te.setFontWeight(QFont.Black)  # 加粗级别。Black是最粗
    te.setFontPointSize(12)  # 设置字体大小
    te.setFontItalic(True)  # 加粗
    te.setFontUnderline(True)  # 添加下划线
    te.setFocus()

btn.clicked.connect(func)

############################
# 使用QFont的字体设置
font = QFont()
font.setStrikeOut(True)		# 添加删除线(中划线),删除线在te下不提供,只能这样设置
te.setCurrentFont(font)

在这里插入图片描述
在这里插入图片描述

字符设置

# 字符设置
# 使用QTextCharFormat的字体设置  
tcf = QTextCharFormat()
tcf.setFontFamily('宋体')  # 设置字体类型
tcf.setFontPointSize(12)  # 设置字体大小
tcf.setFontCapitalization(QFont.Capitalize)  # 每个单词首字母大写
tcf.setForeground(QColor(100, 200, 0))  # 设置前景色(字体色)
te.setCurrentCharFormat(tcf)
# 若有两个格式,覆盖还是合并?
tcf_1 = QTextCharFormat()
tcf_1.setFontStrikeOut(True)  # 删除线
tcf_1.setFontUnderline(True)  # 下划线
tcf_1.setUnderlineColor(QColor(255, 0, 0))  # 设置下划线的颜色
# te.setCurrentCharFormat(tcf_1)					# 覆盖tcf
te.mergeCurrentCharFormat(tcf_1)  # 合并两个样式

换行策略

# 设置无软换行
te.setLineWrapMode(QTextEdit.NoWrap)			# 字数超过了宽度会显示水平滚动条
# 设置有软换行:宽度限制为像素还是列数取决于这个枚举值
te.setLineWrapColumnOrWidth(80)					# 宽度最大为80像素
te.setLineWrapMode(QTextEdit.FixedPixelWidth)
te.setLineWrapColumnOrWidth(5)  				# 宽度最大为5列
te.setLineWrapMode(QTextEdit.FixedColumnWidth)
# 获取换行策略
print(te.lineWrapMode())

# 单词完整性策略
te.setWordWrapMode(QTextOption.WordWrap)		# 保持单词完整

移动到锚点

# 点击按钮,滚动到锚点
te.insertHtml('a' * 700 + '<a name="lzc" href="#anchor">林在超</a>' + 'b' * 600)
btn.clicked.connect(lambda: te.scrollToAnchor('anchor'))

Tab键位控制

# 有关Tab键的设置
te.setTabChangesFocus(True)		# 设置tab的作用仅为改变光标
te.setTabStopDistance(100)		# 设置tab的间距为100像素
# 获取信息
print(te.tabChangesFocus())		# 获取是否为仅为改变光标状态
print(te.tabStopDistance())		# float型的一个tab的宽度,默认80.0
print(te.tabStopWidth())			# int型的一个tab的宽度,默认80

覆盖模式

te = QTextEdit(self)
te.setOverwriteMode(True)		# 设置覆盖模式
print(te.overwriteMode())			# 获取覆盖模式

# 点击按钮,执行如下逻辑
if not te.overwriteMode():		# 如果没有开启覆盖模式
	# 开启覆盖模式
	te.setOverwriteMode(True)	# 输入字符会把光标后的字符替换掉
	te.setCursorWidth(1)		# 设置光标宽度为1
else:
	te.setOverwriteMode(False)
	te.setCursorWidth(10)  		# 设置光标宽度为10

在这里插入图片描述

光标控制

te = QTextEdit(self)
# 获取光标对象
tc = te.textCursor()

# 设置光标
'''参数:
 参数0:光标停在的位置
 参数2:可选,默认为锚点随光标移动,可设置不移动,即为选中内容'''
tc.setPosition(6, QTextCursor.KeepAnchor)

# 移动光标
tc.movePosition(QTextCursor.Up, QTextCursor.KeepAnchor, 1)  # 向上一行选中文本
tc.select(QTextCursor.WordUnderCursor)  # 直接选择
# 可设置参数来设置不同选择方式:这里是选中光标所在的单词
te.setTextCursor(tc)  # 最终要写这句才能设置光标
te.setFocus()
# 获取光标位置
print('是否在段落开始?', tc.atBlockStart())
print('是否在段落末尾?', tc.atBlockEnd())
print('是否在整个文档开始?', tc.atStart())
print('是否在整个文档?', tc.atEnd())
print('在第{}列'.format(tc.columnNumber()))
print('在全局的索引位置:', tc.position())
print('在文本块的索引位置:', tc.positionInBlock())

选中内容操作

te = QTextEdit(self)
tc = te.textCursor()

# 获取选中操作
print(tc.selectedText())				# 获取选中的内容_0
print(tc.selection().toPlainText())	# 获取选中内容_1
print(tc.selectedTableCells())			# 获取表格选中信息,返回一个元组。
# 如(0,2,3,2)表示从0行3列开始,选取了2行2列内容

# 选中操作
tc.clearSelection()								# 取消选中
te.setTextCursor(tc)							# 要设置反向操作
tc.removeSelectedText()							# 删除选中的内容
print(tc.selectionStart())						# 获取选中的开始索引
print(tc.selectionEnd())						# 获取选中的结束索引
print(tc.hasSelection())						# 判断是否有选中的文本

# 删除操作
tc.deleteChar()							# 删除光标右侧一个字符或选中的所有内容
tc.deletePreviousChar()					# 删除光标左侧一个字符或选中的所有内容

打开超链接

class MyQTextEdit(QTextEdit):
	'''必须重写这个类'''
	def mousePressEvent(self, event):
		print(event.pos())  				# 获取鼠标坐标
		url = self.anchorAt(event.pos())  	# 获取描点的url
		if url:
			QDesktopServices.openUrl(QUrl(url))
		return super().mousePressEvent(event)
    
te = MyQTextEdit(self)
te.resize(200, 200)
te.move(10, 10)
te.insertHtml('<a href="http://www.bjtu.edu.cn">超链接<>/a')

常用编辑操作

te = QTextEdit(self)
# 菜单编辑
te.copy()  # 复制
te.paste()  # 粘贴
te.selectAll()  # 全选
te.find('xxx', QTextDocument.FindBackward | QTextDocument.FindCaseSensitively | QTextDocument.FindWholeWords)
# 查找:第1个参数可选。默认向前(向右)、忽略大小写、不必满足整个单词。但可以加参数设置。若查找到就会选择并返回True

# 光标编辑
tc = te.textCursor()
tc.insertText('aa')
tc.insertBlock()
tc.beginEditBlock()  # 开始编辑
tc.insertText('bb')
tc.insertBlock()
tc.insertText('cc')
tc.insertBlock()
tc.endEditBlock()  # 结束编辑,直接绑定4步,以后undo或redo可以直接跳跃这些步数
te.setFocus()

插入内容

# 插入文本
tcf = QTextCharFormat()
tcf.setToolTip('提示文本')  # 设置提示文本
tcf.setFontFamily('楷书')  # 设置字体
tcf.setFontPointSize(24)  # 设置字号
tc = te.textCursor()
tc.insertText('这是插入内容', tcf)
tc.insertHtml('<a href="http://www.bjtu.edu.cn">超链接</a>')

# 插入列表
tc = te.textCursor()
# tl = tc.insertList(QTextListFormat.ListUpperRoman)	# 插入列表,参数列表左侧样式
# tl = tc.createList(QTextListFormat.ListDecimal)	# 创建列表,参数为样式
tlf = QTextListFormat()
tlf.setIndent(2)  # 设置缩进为一个Tab键
tlf.setNumberPrefix('>>')  # 设置列表符左边的装饰
tlf.setNumberSuffix('<<')  # 设置列表符右边的装饰
tlf.setStyle(QTextListFormat.ListDecimal)  # 必须设置十进制数字才会展示列表符
tl = tc.createList(tlf)  # 创建列表_2

# 插入图片
tc = te.textCursor()  # 实例化文本光标对象
tif = QTextImageFormat()  # 实例化图片插入对象
tif.setName('./resources/unity.png')  # 图片路径
tif.setWidth(50)  # 图片宽度
tif.setHeight(50)  # 图片高度
tc.insertImage(tif, QTextFrameFormat.FloatLeft)  # 图片悬浮在左边

# 插入html
tc = te.textCursor()
tdf = QTextDocumentFragment.fromHtml('<h5>插入的html句子 </h5>')  # 插入html
# fromPlainText('<h5>插入的超文本句子</h5>')						# 插入纯文本
tc.insertFragment(tdf)

# 插入句子
tc = te.textCursor()
ttf = QTextTableFormat()
ttf.setAlignment(Qt.AlignLeft)  # 设置对齐方式:左对齐
ttf.setCellPadding(6)  # 设置内间距
ttf.setCellSpacing(5)  # 设置外间距	

# 设置列宽约束,3列的百分比分别为50%,30%,20%
ttf.setColumnWidthConstraints((QTextLength(QTextLength.PercentageLength, 50),
                               QTextLength(QTextLength.PercentageLength, 30),
                               QTextLength(QTextLength.PercentageLength, 20)))
table = tc.insertTable(4, 3, ttf)  # 插入表格,4行3列,样式为ttf
table.appendColumns(1)  # 表格追加一列

# 插入文本块
tbf = QTextBlockFormat()
tbf.setAlignment(Qt.AlignRight)  # 设置对齐方式:右对齐
tbf.setRightMargin(100)  # 设置文本右侧间距,距离右边框为100像素
tbf.setIndent(2)  # 设置文本块距离左边缩进:2个Tab
tcf = QTextCharFormat()
tcf.setFontFamily('隶书')  # 字体
tcf.setFontItalic(True)  # 字体是否倾斜:True
tcf.setFontPointSize(12)  # 设置字号
tc = te.textCursor()
tc.insertBlock(tbf, tcf)  # 给文本框可加入两个元素来决定样式
te.setFocus()

# 插入文本框架
tff = QTextFrameFormat()  # 实例化文本框架
tff.setBorder(5)  # 设置框架的框宽度
tff.setBorderBrush(QColor(200, 100, 100))  # 设置框架的框颜色
tff.setRightMargin(20)  # 设置框架和文本框右边框的间距:20像素
doc = te.document()  # 实例化文本编辑对象
root_frame = doc.rootFrame()  # 设置另一个框架
root_frame.setFrameFormat(tff)  # 另一个框架的样式和上面的相同
tc = te.textCursor()
tc.insertFrame(tff)

设置合并和获取格式

te = QTextEdit(self)
# 字符格式
'''需要在两行输入的中键隔开一行,在执行这个函数才会有效果'''
tcf = QTextCharFormat()
tcf.setFontFamily('微软雅黑')	# 设置字体类型
tcf.setFontPointSize(12)		# 设置字体大小
tcf.setFontOverline(True)		# 加上划线
tcf.setFontUnderline(True)		# 加下划线
tc = te.textCursor()
tc.setBlockCharFormat(tcf)

# 文本块格式
tbf = QTextBlockFormat()		# 实例化文本块格式对象
tbf.setAlignment(Qt.AlignRight)
tbf.setIndent(2)
tc = te.textCursor()
tc.setBlockFormat(tbf)

# 选中字符格式:对选中的文本执行此函参才有效
tcf = QTextCharFormat()
tcf.setFontFamily('微软雅黑')
tcf.setFontPointSize(12)
tcf.setFontOverline(True)
tcf.setFontUnderline(True)
tc = te.textCursor()
tc.setCharFormat(tcf)			# 设置字符格式
tcf_1 = QTextCharFormat()
tcf_1.setFontStrikeOut(True)	# 加删除线
tc.mergeCharFormat(tcf_1)		# 合并字符格式,包含上面的两种格式

# 获取格式
tc = te.textCursor()
print(tc.block().text())				# 获取文本块内容
print(tc.blockNumber())				# 获取文本光标所在的行数
print(tc.currentList().count())		# 获取所含列表的数量,必须添加列表之后才能使用

信号监听

te = QTextEdit(self)
te.textChanged.connect(lambda: print('文本内容改变了'))
te.selectionChanged.connect(lambda: print('所选内容改变了'))
te.copyAvailable.connect(lambda yes: print('当前可复制?', yes))

QPlainTextEdit

简单方法

QPlainText的很多方法在QTextEdit都能找到

qte = QPlainTextEdit(self)

# 文本块的最大数量
qte.setMaximumBlockCount(3)		# 设置最大数量,当超出最大,靠前的块完全删除(不是被隐藏)
print(qte.blockCount())			# 获取当前文本块的数量

# 文本操作
qte.setPlainText('设置文本')
qte.insertPlainText('插入文本')
qte.appendPlainText('追加文本')
qte.appendHtml('<a href="#">超链接</a>') # 追加html时,不支持table(表格),列表,图片
print(qte.toPlainText())				# 获取纯文本内容,不会获取到html

# 设置占位提示文本
qte.setPlaceholderText('请输入内容...')
# 获取占位文本的内容
print(qte.placeholderText())
# 设置为只读
qte.setReadOnly(False)
# 判断是否为只读
print(qte.isReadOnly())
# 自动换行
qte.setLineWrapMode(QPlainTextEdit.NoWrap)  # 默认为WidgetWidth(软换行),这里是不换行
# 获取换行状态
print(qte.lineWrapMode())
# 覆盖模式
qte.setOverwriteMode(True)  # 默认为False(不覆盖),只能向光标后覆盖一个英文字符
# 判断是否为覆盖模式
print(qte.overwriteMode())

# 设置Tab只能转换光标
qte.setTabChangesFocus(False)  # 默认为False(仅制表)。如果为True焦点从一个控件移动到另一个控件
qte.setTabStopDistance(120)  # 在False下,可设置Tab的像素距离,默认为80

光标操作

qte = QPlainTextEdit(self)
# tc = qte.QTextCursor()
# tc.insertImage('./resources/unity.png')
# tc = qte.cursorForPosition(QPoint(100,50))			#在指定坐标处的光标插入内容
# tc.insertText('插入内容')
# qte.setCursorWidth(12)									#设置光标宽度
qte.moveCursor(QTextCursor.End, QTextCursor.KeepAnchor)  # 指定光标的末位置,从当前光标到末尾选中内容

常用编辑操作

qte = QPlainTextEdit(self)
# 放缩
qte.zoomIn(10)  # 正数放大,负数缩小,默认为1
# 滚动到光标
qte.setCenterOnScroll(True)  # 可以在使用centerCursor时让最末尾的光标也显示在中间
# qte.centerCursor()			# 光标移动到中间
qte.ensureCursorVisible()  # 尽量少移动,只要能看到光标就行

格式设置

qte = QPlainTextEdit(self)
# 格式设置
tcf = QTextCharFormat()
tcf.setFontUnderline(True)  # 加下划线
tcf.setUnderlineColor(QColor(255, 5, 0))  # 设置下划线颜色
qte.setCurrentCharFormat(tcf)

信号

qte.textChanged.connect(lambda: print('文本内容改变了'))
qte.selectionChanged.connect(lambda: print('选中内容发生了改变', qte.textCursor().selectedText()))
qte.modificationChanged.connect(lambda var: print('修改状态发生了改变', var))
qte.cursorPositionChanged.connect(lambda: print('光标位置改变了'))
qte.blockCountChanged.connect(lambda: print('文本块的数量改变了'))
# doc = qte.document()
# doc.setModified(False)
qte.updateRequest.connect(lambda rect, dy: line_label.move(line_label.x(), line_label.y() + dy))

QKeySequenceEdit

绑定快捷键

btn = QPushButton('按钮', self)
btn.move(10, 200)
kse = QKeySequenceEdit(self)

# 设置快捷键
# ks = QKeySequence('Ctrl+Z')			#使用字符串
# ks = QKeySequence(QKeySequence.Copy)	#使用枚举值
ks = QKeySequence(Qt.CTRL + Qt.Key_Z, Qt.CTRL + Qt.Key_Q)  # 使用特定的Qt的枚举
kse.setKeySequence(ks)  # 添加到kse对象
kse.clear()  # 清空快捷键
btn.clicked.connect(lambda: print(kse.keySequence().toString(), kse.keySequence().count()))

信号

kse = QKeySequenceEdit(self)
kse.editingFinished.connect(lambda: print('结束编辑'))
kse.keySequenceChanged.connect(lambda key: print('键位序列改变了', key.toString()))

在这里插入图片描述

QFrame

frame = QFrame(self)
frame.resize(200, 200)
frame.move(50, 50)
frame.setStyleSheet('background-color:cyan;')
# frame.setFrameShape(QFrame.Box)			# 设置frame的形状
# frame.setFrameShadow(QFrame.Raised)		# 设置阴影的形状
frame.setFrameStyle(QFrame.Box | QFrame.Raised)  # 可把阴影和frame形状放这个函数中,与上面两个等效
frame.setLineWidth(6)  # 设置外线的宽度
frame.setMidLineWidth(3)  # 设置中线的宽度
print(frame.frameWidth())  # 获取总线的宽度 = 外线+阴影+内线(和外线等宽)
frame.setFrameRect(QRect(80, 80, 60, 60))  # 设置矩形的宽度

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值