Я пытаюсь разработать графический интерфейс, содержащий виджет QTextEdit. Когда gui загружается, он извлекает данные из файла, где данные находятся в столбцах фиксированной ширины.Нарисовать вертикальные линии на QTextEdit в PyQt
Я хочу, чтобы пользователь мог щелкнуть в разных точках виджета QTextEdit, чтобы отметить позиции, где начинаются новые столбцы, и я хочу, чтобы вертикальные линии рисовались на виджетах в этих позициях, чтобы показать столбцы.
В моей GUI инициализации метод() я имел следующую строку перехватывать paintEvent из текстового виджета:
self.mytextviewer.paintEvent = self.handlePaintEvent
и у меня был метод handlePaintEvent():
def handlePaintEvent(self, event):
painter = QPainter(self.mytextviewer)
pen = QPen(Qt.SolidLine)
pen.setColor(Qt.black)
pen.setWidth(1)
painter.setPen(pen)
painter.drawLine(20, 0, 20, 100)
Однако, когда я пытался запустить код, я начал получать ошибки QPainter о том, что художник не был активным.
Затем я попытался в другом направлении, подклассифицировал QTextEdit и добавил в основном тот же код, что и выше, к методу paintEvent() моего подкласса. Однако я все еще получаю ошибки.
Я затем попытался добавить painter.begin(self)
и painter.end()
к методу paintEvent(), но не имел радости от этого.
Кроме того, текст, который изначально отображался в виджетах, больше не отображается, так как я добавил свой собственный метод paintEvent().
Я делаю что-то действительно глупо здесь, или есть лучший/более простой способ сделать это?
Спасибо.