2017-01-21 67 views
1

以下のコードは、ダイアログと同期してGroupBox()というサイズの単一のダイアログを作成します。これはGroupBoxのデフォルトのサイズ変更ポリシーです。このポリシーを変更する方法GroupBoxは、可能な限り小さな領域(領域)を占有し、垂直方向には拡大しません。それを達成する方法?QGroupBoxのサイズ変更を制御する方法

enter image description here

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_() 
+0

垂直スペーサーを追加するために、確認ボタンの前に 'panel.layout()。addWidget(QtGui.QSpacerItem(20、40、QtGui.QSizePolicy.Minimum、QSizePolicy.Expanding)'のようなものを試してみてください。 – 101

+0

グループボックスの後に 'panel.layout()。addStretch()'を入れてください。 – ekhumoro

答えて

1

ekhumoroずつ、最も単純な:

enter image description here

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_() 

第二のアプローチは、我々は.addItem.addWidgetを交換した後、同様に動作します

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_() 
+0

最も優れた解決策:) – ekhumoro

関連する問題