PyQt4: установите размер QGridLayout в зависимости от размера QMainWindow

#python #qt #pyqt #qwidget

#python #qt #pyqt #qwidget

Вопрос:

Я пишу небольшое приложение Qt на Python. Я создал QMainWindow, в котором есть QGridLayout. В каждую сетку я добавляю виджет QTextBrowser. Я хочу, чтобы левая часть моей сетки была не больше 25% окна. Итак, у меня будет два QTextBrowsers: один составляет 25% от ширины окна, а другой — 75% от ширины окна. Как я могу это сделать? Спасибо!

Ответ №1:

Вы можете указать относительную ширину, задав каждой ячейке растяжение с помощью setStretch(). Они получат размеры, пропорциональные заданным отрезкам. Вот простой пример, который делает правый виджет в 3 раза больше, чем левый виджет.

 import sys
from PyQt4 import QtGui

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)

    Q = QtGui.QWidget()

    H = QtGui.QHBoxLayout()
    H.addWidget(QtGui.QTextBrowser())
    H.setStretch(0,1)
    H.addWidget(QtGui.QTextBrowser())
    H.setStretch(1,3)

    Q.setLayout(H)

    Q.show()

    app.exec_()
  

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