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

时间:2017-09-18 06:59:38

标签: python qt pyside

我能够显示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_())

1 个答案:

答案 0 :(得分:1)

您可以通过QTextEditQTextCursor内进行选择,是的。它应该使用selectionStartselectionEnd方法:

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