1
滚动行号,这里是我的代码:如何在一个QTextEdit
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class Editor(QPlainTextEdit):
def __init__(self, parent):
super(Editor, self).__init__()
self.setPlainText(u'apple, banana\norange\nblah blah\n\nOh yeah!....\n'*2)
self.setParent(parent)
self.setWordWrapMode(QTextOption.NoWrap)
self.setViewportMargins(50,0,0,0)
QObject.connect(self, SIGNAL("textChanged()"), self.repainting)
def repainting(self) : self.parent().update()
class WinE(QMainWindow):
def __init__(self, font=QFont('Monospace', 12)):
super(WinE, self).__init__()
self.font = font
self.font.setFixedPitch(True)
self.ce = Editor(self)
self.ce.setFont(self.font)
self.setWindowTitle('Code Editor')
self.textr = QRect(3, 5, self.ce.childrenRect().x() -12, self.ce.childrenRect().height())
self.setGeometry(QRect(800, 840, 351, 250))
self.setCentralWidget(self.ce)
self.show()
def paintEvent(self, event):
qp = QPainter ()
qp.begin (self)
self.drawLiNums (qp)
qp.end ()
def drawLiNums(self, qp):
qp.setPen (QColor(255, 255, 255))
qp.setFont (self.font)
qp.drawText (self.textr, Qt.AlignRight, self.lineNumeration())
def lineNumeration(self):
return ''.join([str(n+1) +'\n' for n in range(len(self.ce.toPlainText().splitlines(False)))])
def main():
app = QApplication(sys.argv)
ex = WinE()
sys.exit(app.exec_())
if __name__ == '__main__': main()
Editor
显示了号码,并增加新的生产线时的数字正在更新。但是当它到达小部件的末尾时,文本会在输入时继续滚动,但行号会停止更新,并且行号区域不会滚动!
太谢谢你了!问题解决了。祝福,愿力量与你同在......;) – Alex