如何在 PyQt4 的水平布局中拉伸单个小部件?

Posted

技术标签:

【中文标题】如何在 PyQt4 的水平布局中拉伸单个小部件?【英文标题】:How can I stretch a single widget in a horizantal layout in PyQt4? 【发布时间】:2013-05-09 18:17:11 【问题描述】:

这里三个按钮的大小都是相等的,如何增加只有第一个按钮的大小,使其比其他两个按钮占用更多的空间。

from PyQt4 import QtGui
import sys

class AllWidgets(QtGui.QWidget):

    def __init__(self):
        super(AllWidgets, self).__init__()
        layout = QtGui.QHBoxLayout()
        #code for pushbutton 1
        pushbutton_1 = QtGui.QPushButton()
        pushbutton_1.setText('First')
        layout.addWidget(pushbutton_1)
        #code for pushbutton 2
        pushbutton_2 = QtGui.QPushButton()
        pushbutton_2.setText('Second')
        layout.addWidget(pushbutton_2)
        #code for pushbutton 3
        pushbutton_3 = QtGui.QPushButton()
        pushbutton_3.setText('Third')
        layout.addWidget(pushbutton_3)
        self.setLayout(layout)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    display = AllWidgets()
    display.show()
    sys.exit(app.exec_())

【问题讨论】:

【参考方案1】:

addWigdet() 的第二个(可选)参数是拉伸因子。如果您想拉伸第一个按钮,只需执行以下操作:

layout.addWidget(pushbutton_1, 1)

如果您希望所有按钮都拉伸,但第一个更大,您只需使用不同的拉伸因子:

layout.addWidget(pushbutton_1, 2)
layout.addWidget(pushbutton_2, 1)
layout.addWidget(pushbutton_3, 1)

【讨论】:

谢谢,但是这种拉伸只有在我最大化窗口后才会发生,我可以做一些这样的事情,即在未最大化时它第一次显示输出,第一个按钮占用更多空间吗? 您可以尝试:pushbutton_1.setMinimumWidth(),使用您想要的最小宽度,以像素为单位。或者,如果您愿意,也可以使用self.setMinimumWidth() 设置窗口的最小宽度。

以上是关于如何在 PyQt4 的水平布局中拉伸单个小部件?的主要内容,如果未能解决你的问题,请参考以下文章

布局:如何在垂直布局中使一个小部件成为其余小部件的 3 倍

PyQt4 Box布局

如何构建一个在拉伸时显示更多按钮的 android 小部件?

在列的可用空间中拉伸小部件

如何在堆栈中垂直或水平居中小部件?

如何在 PyQt5 中为 QGridLayout 添加拉伸?