pyqt5的QTextEdit里使用光标移动方法选中文档的冲突问题
学习pyqt5的使用时.参考https://blog.csdn.net/weixin_30732487/article/details/97860122?utm_source=app出了奇怪的错误.我本来是想控制光标移动选中我要的文字. 使用多个tc.movePosition(QTextCursor.XXX, QTextCursor.KeepAnchor) 来移动.并没有按我想要的方向来移动.经过测试得知.向上移动一行(QTextCursor.Up)和移动到上一个块的开头(QTextCursor.PreviousBlock)谁在前面就运行谁.
还有一个大坑,没有输入内容的地方光标根本移动不了.各种所谓的选中功能也没有返回字符串,必须要加一句a = tc.selectedText()才返回要的文本内容.
import sys
from PyQt5.QtWidgets import QApplication, QWidget,QTextEdit,QPushButton
from PyQt5.QtGui import QTextCursor
class Demo(QWidget):
def init(self):
super().init()
self.resize(300,300)
t = QTextEdit(self)
tb=QPushButton(‘按钮’,self)
tb.move(100,200)
t.setText(‘abcd\n if s’)
def A():
tc = t.textCursor() # 获取文本光标对象->QTextCursor
tc.movePosition(QTextCursor.PreviousBlock, QTextCursor.KeepAnchor) #移动光标
# tc.movePosition(QTextCursor.Up, QTextCursor.KeepAnchor) # 移动光标
tc.movePosition(QTextCursor.Right,QTextCursor.KeepAnchor,5 )
#参数1 移动选项:
#QTextCursor.NoMove 将光标保持在原位
#QTextCursor.Start 移至文档的开头
#QTextCursor.StartOfLine 移动到当前行的开头
#参数2 锚点移动模式:
#QTextCursor.MoveAnchor 将锚点移动到与光标本身相同的位置(默认)
#QTextCursor.KeepAnchor 将锚固定在原处
#说明:锚点与光标之间的内容会被选中
t.setTextCursor(tc) #把文本光标方向设置回去---setPosition和movePosition才有效果
t.setFocus()
tb.clicked.connect(A)
if name == ‘main’:
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
来源:CSDN
作者:wujiafa1988
链接:https://blog.csdn.net/wujiafa1988/article/details/103833445