Qtextedit पाते हैं () हमेशा गलत रिटर्न देता है (pyside2)
मैं कुछ खोज करना चाहता हूं और एक क्यूटेक्स्टडिट में बदल देता हूं, लेकिन क्यूटेक्स्टडिट (एफटीपी) हमेशा गलत रिटर्न देता है / कुछ नहीं पाता है। मेरी गलती कहाँ है?
यहाँ एक (बहुत) न्यूनतम प्रजनन योग्य उदाहरण है:
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) के माध्यम से दस्तावेज़ की शुरुआत के लिए सेट किया है।
जवाब
मैंने पाया कि 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_()