Выделите текст в окне QTextEdit и выделите, используя setTextBackgroundColor - PullRequest
0 голосов
/ 02 июня 2018

Я создал окно pyqt, определив следующее:

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window,self).__init__()

В моем графическом интерфейсе есть окно, в которое я могу импортировать текст, и панель инструментов:

self.textEdit = QtGui.QTextEdit()
self.setCentralWidget(self.textEdit)
self.textEdit.setReadOnly(True)

MyToolBar = QtGui.QToolBar() # QToolBar is a metaclass of QMainWindow
self.addToolBar(QtCore.Qt.RightToolBarArea,MyToolBar)

У меня есть кнопка на этой панели инструментов, и я хочу иметь возможность выделить текст, который я выбрал в окне QTextEdit, нажав кнопку.

Проблема, с которой я столкнулся, заключается в определении метода, который может отслеживать, какой текст был выделен, а затем выделять его цветом, который я выбрал.Пока у меня есть следующее:

def Airframe_label(self):
    self.cursor = QtGui.QTextCursor() 
    self.color = QtGui.QColor()
    self.cursor.beginEditBlock()
    self.textEdit.setTextBackgroundColor(self.color.Qt.green)
    self.cursor.endEditBlock()

Возможно, я использую классы / методы, которые не подходят, или что моя реализация их неверна.Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 04 июня 2018

Вы должны установить новый QTextCharFormat для QTextCursor из QTextEdit:

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window,self).__init__()
        self.textEdit = QtGui.QTextEdit()
        self.setCentralWidget(self.textEdit)
        self.textEdit.setReadOnly(True)

        toolbar = QtGui.QToolBar()
        self.addToolBar(QtCore.Qt.RightToolBarArea, toolbar)
        action = toolbar.addAction("Press Me")
        action.triggered.connect(self.change_color)
        self.textEdit.append("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam ut metus diam. Donec vulputate porta libero, et hendrerit sapien sollicitudin ut. Aenean molestie sapien sit amet turpis tristique laoreet quis sed lectus. Ut sed ante arcu. Mauris vel finibus augue. Cras non malesuada dolor. Duis vel molestie ante. Pellentesque quis justo neque. Curabitur blandit auctor viverra. Vestibulum eu feugiat eros. Pellentesque at nisl ex. Morbi ornare tellus magna. Donec vel urna ac mi bibendum gravida. Integer quis interdum mauris. Aenean a metus eu felis volutpat fermentum in vitae massa.")

    def change_color(self):
        cursor = self.textEdit.textCursor()
        if cursor.hasSelection():
            fmt = QtGui.QTextCharFormat()
            fmt.setBackground(QtCore.Qt.green)
            cursor.setCharFormat(fmt)


if __name__=='__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec())
...