Как контролировать изменение размера QGroupBox
Код ниже создает единый диалог с GroupBox()
изменение размера синхронно с диалогом. Это политика изменения размера по умолчанию для GroupBox. Как изменить эту политику так GroupBox
занимает как можно меньше места (площади) и никогда не расширяется вертикально. Как этого добиться?
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
panel=QtGui.QDialog()
panel.setLayout(QtGui.QVBoxLayout())
groupbox = QtGui.QGroupBox('Group Box')
groupbox.setLayout(QtGui.QVBoxLayout())
panel.layout().addWidget(groupbox)
for i in range(3):
row = QtGui.QHBoxLayout()
row.addWidget(QtGui.QLabel('Label'))
row.addWidget(QtGui.QLineEdit())
row.addWidget(QtGui.QPushButton('Push Button'))
groupbox.layout().addLayout(row)
panel.layout().addWidget(QtGui.QPushButton('Confirm'))
panel.show()
app.exec_()
1 ответ
Решение
Самый простой по эхуморо:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
panel=QtGui.QDialog()
panel.setLayout(QtGui.QVBoxLayout())
groupbox = QtGui.QGroupBox('Group Box')
groupbox.setLayout(QtGui.QVBoxLayout())
panel.layout().addWidget(groupbox)
panel.layout().addStretch()
for i in range(3):
row = QtGui.QHBoxLayout()
row.addWidget(QtGui.QLabel('Label'))
row.addWidget(QtGui.QLineEdit())
row.addWidget(QtGui.QPushButton('Push Button'))
groupbox.layout().addLayout(row)
panel.layout().addWidget(QtGui.QPushButton('Confirm'))
panel.show()
app.exec_()
Второй подход работает также после того, как мы заменим .addWidget
с .addItem
:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
panel=QtGui.QDialog()
panel.setLayout(QtGui.QVBoxLayout())
groupbox = QtGui.QGroupBox('Group Box')
groupbox.setLayout(QtGui.QVBoxLayout())
panel.layout().addWidget(groupbox)
panel.layout().addItem(QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding))
for i in range(3):
row = QtGui.QHBoxLayout()
row.addWidget(QtGui.QLabel('Label'))
row.addWidget(QtGui.QLineEdit())
row.addWidget(QtGui.QPushButton('Push Button'))
groupbox.layout().addLayout(row)
panel.layout().addWidget(QtGui.QPushButton('Confirm'))
panel.show()
app.exec_()