在PyQT中增加QPushButton的高度

Nyx*_*nyx 4 python qt pyqt pyqt4 python-2.7

QPushButton在应用程序窗口中有2个:btn1需要是的高度的5倍btn2

问题:尝试将的行跨度设置self.btn15使用,layout.addWidget但高度保持不变。我错过了某个设置吗?

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.initUI()

    def initUI(self):
        layout = QtGui.QGridLayout()

        self.btn1 = QtGui.QPushButton('Hello')
        self.btn2 = QtGui.QPushButton('World')

        layout.addWidget(self.btn1, 1, 1, 5, 1)
        layout.addWidget(self.btn2, 6, 1, 1, 1)

        centralWidget = QtGui.QWidget()
        centralWidget.setLayout(layout)
        self.setCentralWidget(centralWidget)

def main():
    app = QtGui.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

aza*_*lea 5

您需要更改按钮的大小策略:

self.btn1.setSizePolicy(
    QtGui.QSizePolicy.Preferred,
    QtGui.QSizePolicy.Expanding)

self.btn2.setSizePolicy(
    QtGui.QSizePolicy.Preferred,
    QtGui.QSizePolicy.Preferred)
Run Code Online (Sandbox Code Playgroud)

Qt doc中,默认情况下:

类似于按钮的小部件将大小策略设置为指定它们可以水平拉伸但垂直固定。

即默认的大小策略QPushButtonMinimum水平和Fixed垂直。

此外,在示例中,实现所需目标的一种更简单的方法是使用QVBoxLayout,并在调用addWidget()时设置拉伸因子。即

def initUI(self):
    layout = QtGui.QVBoxLayout()

    self.btn1 = QtGui.QPushButton('Hello')
    self.btn2 = QtGui.QPushButton('World')

    self.btn1.setSizePolicy(
        QtGui.QSizePolicy.Preferred,
        QtGui.QSizePolicy.Expanding)

    self.btn2.setSizePolicy(
        QtGui.QSizePolicy.Preferred,
        QtGui.QSizePolicy.Preferred)

    layout.addWidget(self.btn1, 5)
    layout.addWidget(self.btn2, 1)

    centralWidget = QtGui.QWidget()
    centralWidget.setLayout(layout)
    self.setCentralWidget(centralWidget)
Run Code Online (Sandbox Code Playgroud)