PyQt:从QTextEdit获取行数

时间:2016-06-14 18:23:08

标签: python pyqt

我正在尝试创建一个聊天应用程序,所以我添加了QTextEdit小部件,其中用户键入内容,小部件的最大高度 30 像素,所以基本上一个

    self.msgtext = QtGui.QTextEdit(self)
    self.msgtext.setObjectName('msgtext')
    self.msgtext.setStyleSheet("#msgtext {background-color: black; color: yellow; font-size: 18pt; }")
    self.msgtext.setMaximumSize(500, 30)
    self.msgtextplain = self.msgtext.toPlainText()

我想在用户获得一个新行时增加小部件的最大高度,但我不知道是否有任何信号可以告诉我已经到达新行。

是否有任何信号可以计算QTextEdit中的行数?

1 个答案:

答案 0 :(得分:2)

您可以使用blockCount()但不要忘记调整您用于QTextEdit的父母的任何内容。这是一个例子:

import sys
from PyQt5 import QtGui, QtWidgets, QtCore

class Window(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)

        self.msgtext = QtWidgets.QTextEdit(self)
        self.msgtext.setObjectName('msgtext')
        self.msgtext.setStyleSheet("#msgtext {background-color: black; color: yellow; font-size: 18pt; }")
        self.msgtext.resize(500, 30)
        self.msgtextplain = self.msgtext.toPlainText()

        self.msgtext.textChanged.connect(self.changed)

    def changed(self):
        lines = self.msgtext.document().blockCount()
        self.msgtext.resize(500, 30*lines)
        self.resize(500, 30*lines)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(app.exec_())

PyQt5 。要在 PyQt4 中执行此操作,请将QtWidgets的所有内容更改为QtGui(并明确检查导入行;这应该足够,但要确定您是否有任何困难)。结果如下:

Dynamically resizing a QLineEdit