PyQT中如何增加QPushButton的高度

6
我在应用程序窗口中有2个QPushButton:btn1需要是btn2高度的5倍。
问题:尝试使用layout.addWidget将self.btn1的行跨度设置为5,但高度仍然没有改变。我错过了某些设置吗?
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()

enter image description here


1
看起来你的代码中前五行的高度非常小。你可以尝试使用setRowMinimumHeight(self, int row, int minSize)为每一行设置最小高度。 - Exa
1
你想让按钮的高度增加5倍吗?比如像self.btn1.setMinimumHeight(5*self.btn2.height())这样? - atomSmasher
1个回答

9
你需要更改按钮的大小策略:
self.btn1.setSizePolicy(
    QtGui.QSizePolicy.Preferred,
    QtGui.QSizePolicy.Expanding)

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

根据Qt文档,默认情况下:

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

即,默认的QPushButton大小策略为水平方向的Minimum,垂直方向的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)

无法从'PyQt5.QtGui'导入名称为'QSizePolicy'的模块。 - undefined
1
在PyQt5中,你需要使用from PyQt5.QtWidgets import QSizePolicy - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接