如何使用 PySide 和 QTextEdit 获取选定的文本以及开始和结束位置?

How to get selected text and start and end locations using PySide & QTextEdit?

我能够显示 QTextEdit 小部件并检测用户何时更改所选文本。但是,我不确定如何获取所选文本和表示所选内容的开始和结束位置的整数值,这些值是从文本字段开头开始测量的字符数。我需要创建一个 QTextCursor 吗?我很感激一个例子。这是我当前的代码:

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.setWindowTitle("My Form")
        self.edit = QTextEdit("Type here...")
        self.button = QPushButton("Show Greetings")
        self.button.clicked.connect(self.greetings)
        self.quit = QPushButton("QUIT")
        self.quit.clicked.connect(app.exit)
        self.edit.selectionChanged.connect(self.handleSelectionChanged)

        layout = QVBoxLayout()
        layout.addWidget(self.edit)
        layout.addWidget(self.button)
        layout.addWidget(self.quit)
        self.setLayout(layout)

    def greetings(self):
        print ("Hello %s" % self.edit.text())

    def handleSelectionChanged(self):
        print ("Selection start:%d end%d" % (0,0)) # change to position & anchor

if __name__ == '__main__':
    app = QApplication(sys.argv)
    form=Form()
    form.show()
    sys.exit(app.exec_())

您可以通过 QTextCursorQTextEdit 中进行选择,是的。它有 selectionStart and selectionEnd 个你应该使用的方法:

def handleSelectionChanged(self):
    cursor = self.edit.textCursor()
    print ("Selection start: %d end: %d" % 
           (cursor.selectionStart(), cursor.selectionEnd()))