Python QTextedit find()始终返回False(pyside2)
我想在QTextEdit中执行一些搜索和替换,但QTextEdit.find()始终返回False/未找到任何内容。我的错在哪里 以下是一个(非常)最小的可复制示例:Python QTextedit find()始终返回False(pyside2),python,qt5,pyside2,Python,Qt5,Pyside2,我想在QTextEdit中执行一些搜索和替换,但QTextEdit.find()始终返回False/未找到任何内容。我的错在哪里 以下是一个(非常)最小的可复制示例: from PySide2.QtWidgets import QApplication, QTextEdit from PySide2.QtGui import QTextCursor import sys app = QApplication(sys.argv) textedit = QTextEdit() cursor = t
from PySide2.QtWidgets import QApplication, QTextEdit
from PySide2.QtGui import QTextCursor
import sys
app = QApplication(sys.argv)
textedit = QTextEdit()
cursor = textedit.textCursor()
cursor.insertText("test test test")
cursor.movePosition(QTextCursor.Start)
print(textedit.find("t"))
textedit.show()
app.exec_()
Thx对于该-。-:
“这个问题在这里已经有了答案:
QTextEdit.find()在Python中不起作用“
事实并非如此。(在陈述类似问题和结束问题之前,可能先阅读问题和答案。这就是stackoverflow名声如此不好的原因。):
“问题是光标在窗口中的位置。
默认情况下,搜索仅向前进行(=从光标位置开始)。
但是我通过cursor.movePosition(QTextCursor.start)将光标设置为文档的开头我发现
textedit.textCursor()
创建位置的本地副本,并且它不会更改QTextEdit
中的原始位置
您必须使用更新QTextEdit
中的位置
textedit.setTextCursor(cursor)
然后,find()
当我使用textedit.moveCursor()
而不是cursor.moveCursor()
python\u learner和eyllanesc:Nope.@furas-thx,这对我有用吗?我发现textedit.textCursor()不能与“cursor.movePosition”一起使用还是很尴尬
创建本地副本,并且它不会改变原始位置-最后您必须使用文本编辑.setTextCursor(光标)
请参见textedit.setTextCursor(光标)
在回答中,我知道这种行为,并始终将其视为一项功能(在后台执行操作时不要弄乱用户的光标)。记住这一点,我仍然觉得奇怪,需要使用“用户光标”使find()工作
from PySide2.QtWidgets import QApplication, QTextEdit
from PySide2.QtGui import QTextCursor
import sys
app = QApplication(sys.argv)
textedit = QTextEdit()
cursor = textedit.textCursor() # get local copy
cursor.insertText("test test test")
cursor.movePosition(QTextCursor.Start)
textedit.setTextCursor(cursor) # update it
#textedit.insertPlainText("test test test")
#textedit.moveCursor(QTextCursor.Start)
textedit.show()
print(textedit.find("t")) # first `t`
print(textedit.find("t")) # second `t`
app.exec_()