Расширение / изменение размера виджета QTextBrowser пользователем без использования QLayout - PullRequest
0 голосов
/ 29 октября 2018

В моем приложении есть виджет QTextBrowser, и данные будут добавляться к нему каждую 1 секунду. Я знаю, что когда данные попадают в нижнюю часть виджета, создается вертикальная полоса прокрутки. Но возможно ли расширить размер виджета QTextBrowser (не используя QLayout) пользователем путем перетаскивания мышью, когда это требуется?

Если да, пожалуйста, помогите мне.

Вот мой кусок кода.

#!/usr/bin/python
from PyQt4 import QtGui
from PyQt4 import QtCore
from PyQt4.QtGui import QSplitter
from PyQt4.QtGui import QTextEdit

import sys

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

    def initUI(self):
        self.qle = QtGui.QLineEdit(self)
        self.qle.setFixedWidth(450) # tab width
        self.qle.move(20, 35) # tab position

        self.browser = QtGui.QTextBrowser(self)
        self.browser.resize(420, 100)
        self.browser.move(34, 100)

        self.lbl = QtGui.QLabel(self)
        self.lbl.setGeometry(10, 55,200,20)
        self.lbl.setText("Enter input here")
        self.lbl.move(200,10) # label position

        self.setGeometry(300, 300, 500, 250)
        self.show()

def main():
    app = QtGui.QApplication(sys.argv)
    commit = Commit()
    commit.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете использовать QSizeGrip:

from PyQt4 import QtCore, QtGui

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

    def initUI(self):
        self.qle = QtGui.QLineEdit(self)
        self.qle.setFixedWidth(450) # tab width
        self.qle.move(20, 35) # tab position

        self.browser = QtGui.QTextBrowser(self)
        self.browser.setGeometry(34, 100, 420, 100)

        self.browser.setWindowFlags(QtCore.Qt.SubWindow)
        size_grip = QtGui.QSizeGrip(self.browser)
        lay = QtGui.QVBoxLayout(self.browser)
        lay.addWidget(size_grip, alignment= QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight)

        self.lbl = QtGui.QLabel(self)
        self.lbl.setGeometry(200,10, 200,20)
        self.lbl.setText("Enter input here")

        self.setGeometry(300, 300, 500, 250)
        self.show()

def main():
    import sys
    app = QtGui.QApplication(sys.argv)
    commit = Commit()
    commit.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

Теперь, если вы переместите мышь в нижнем правом углу, вы увидите, что курсор меняет значок, в этот момент вы можете изменить размер, перетаскивая мышь.

...