Qtextedit पाते हैं () हमेशा गलत रिटर्न देता है (pyside2)

Dec 10 2020

मैं कुछ खोज करना चाहता हूं और एक क्यूटेक्स्टडिट में बदल देता हूं, लेकिन क्यूटेक्स्टडिट (एफटीपी) हमेशा गलत रिटर्न देता है / कुछ नहीं पाता है। मेरी गलती कहाँ है?

यहाँ एक (बहुत) न्यूनतम प्रजनन योग्य उदाहरण है:

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।

वह सत्य नहीं है। (हो सकता है कि ऐसा कुछ बताने और सवालों को बंद करने से पहले प्रश्नों और उत्तरों को पढ़ें। यही कारण है कि स्टैकओवरफ्लो की इतनी खराब प्रतिष्ठा है।): "समस्या खिड़की में कर्सर की स्थिति है। डिफ़ॉल्ट रूप से खोज केवल आगे होती है। (= कर्सर की स्थिति के बाद से)। लेकिन मैंने अपने कर्सर को कर्सर.movePosition (QTextCursor.Start) के माध्यम से दस्तावेज़ की शुरुआत के लिए सेट किया है।

जवाब

1 furas Dec 10 2020 at 22:12

मैंने पाया कि textedit.textCursor()स्थिति की स्थानीय प्रतिलिपि बनाता है और यह मूल स्थिति को नहीं बदलता है QTextEdit

आपको QTextEditउपयोग करने में स्थिति अपडेट करनी होगी

textedit.setTextCursor(cursor) 

और फिर जैसा आप उम्मीद करेंगे find()वैसा ही पहले मिलेगा t


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_()