如何并排粘贴小部件

时间:2018-02-03 00:47:08

标签: python qt pyqt qcombobox qdialog

下面的代码创建了一个包含三个小部件的对话框窗口:QLabel,QComboBox和QButton。

我希望QLabel和QComboBox坐在同一条线上。这就是为什么这两个小部件都分配给相同的水平布局。 调整对话框大小会在Label和ComboBox之间创建一个巨大的空白区域。如何在对话框调整大小时确保Combo的左侧粘贴到Label的右侧?

enter image description here

for fst, snd in [x for x in lst where len(x) == 2]:

1 个答案:

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

enter image description here