pyside QTextEdit 选中文本事件

2 投票
1 回答
1815 浏览
提问于 2025-04-17 23:27

我有一个QTextEdit的控件放在左边,还有一个QTextBrowser放在右边。现在我想实现以下功能:

  1. 用户选择一些文字
  2. 这个选择会触发一个函数
  3. 选中的文字会被处理
  4. 处理后的文字会显示在右边

我在网上查找过,但没有找到相关的结果。

1 个回答

4

你可以使用 selectionChanged 这个信号来触发一个函数,然后通过 textCursor 来获取选中的文本。处理过的文本可以通过 setPlainText 来显示,或者如果你想使用一些格式化的内容,可以用 setHtml。不过要注意,QTextBrowser 只支持一部分的 html/css。

下面是一个示例脚本,展示了如何把这些内容结合在一起:

from PySide import QtCore, QtGui

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.edit = QtGui.QTextEdit(self)
        self.edit.selectionChanged.connect(self.handleSelectionChanged)
        self.browser = QtGui.QTextBrowser(self)
        layout = QtGui.QHBoxLayout(self)
        layout.addWidget(self.edit)
        layout.addWidget(self.browser)

    def handleSelectionChanged(self):
        text = self.edit.textCursor().selectedText()
        # process text here...
        self.browser.setPlainText(text)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 300, 600, 300)
    window.show()
    sys.exit(app.exec_())

撰写回答