下面的代码创建了一个包含三个小部件的对话框窗口:QLabel,QComboBox和QButton。
我希望QLabel和QComboBox坐在同一条线上。这就是为什么这两个小部件都分配给相同的水平布局。 调整对话框大小会在Label和ComboBox之间创建一个巨大的空白区域。如何在对话框调整大小时确保Combo的左侧粘贴到Label的右侧?
for fst, snd in [x for x in lst where len(x) == 2]:
答案 0 :(得分:1)
您必须通过QSizePolicy
建立尺寸政策,在您的情况下,您必须在QSizePolicy::Expanding
的水平成分中设置政策QComboBox
:
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
app = QApplication(sys.argv)
class Dialog(QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
self.setLayout(QVBoxLayout())
h_layout = QHBoxLayout()
self.layout().addLayout(h_layout)
label = QLabel(self)
label.setText('Month:')
combo = QComboBox(self)
policy = combo.sizePolicy()
policy.setHorizontalPolicy(QSizePolicy.Expanding)
combo.setSizePolicy(policy)
h_layout.addWidget(label)
h_layout.addWidget(combo)
button = QPushButton('Ok')
self.layout().addWidget(button)
self.resize(200, 50)
self.show()
dialog = Dialog()
sys.exit(app.exec_())