def __init__(self, parent): self.parent = parent self.parent.setAttribute(Qt.WA_DeleteOnClose) text = QPlainTextEdit(self.parent) lineNumbers = QPlainTextEdit(self.parent) lineNumbers.setMaximumWidth(20) lineNumbers.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) lineNumbers.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) lineNumbers.setFrameShape(QFrame.StyledPanel) lineNumbers.setFrameShadow(QFrame.Plain) lineNumbers.setEnabled(False) grid = QGridLayout(self.parent) grid.addWidget(lineNumbers, 0, 0, 1, 1) grid.addWidget(text, 0, 1, 1, 1) text.blockCountChanged.connect(self.parent.setLineNumbers) text.updateRequest.connect(self.parent.scrollLineNumbers) text.cursorPositionChanged.connect(self.parent.highlightCurrentLine) text.document().contentsChanged.connect(self.parent.documentModified) self.parent.text = text self.parent.lineNumbers = lineNumbers