The code below creates a single dialog with GroupBox()
resizing in sync with the dialog. This is default resizing policy for GroupBox. How to change this policy so GroupBox
occupies as little space (area) as possible and never expands vertically. How to achieve it?
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_()
The simplest one by ekhumoro:
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_()
The second approach works as well after we replace .addWidget
with .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_()