python - 增加 PyQT 中 QPushButton 的高度

标签 python python-2.7 qt pyqt pyqt4

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

问题:尝试使用layout.addWidgetself.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

最佳答案

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

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

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

来自Qt doc ,默认情况下:

Button-like widgets set the size policy to specify that they may stretch horizontally, but are fixed vertically.

QPushButton 的默认大小策略是水平方向 Minimum,垂直方向 Fixed

此外,在示例中实现您想要的效果的更简单方法是使用 QVBoxLayout,并在调用 addWidget() 时设置拉伸(stretch)因子。 。即

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)

关于python - 增加 PyQT 中 QPushButton 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100018/

相关文章:

python - 防止 Python webbrowser.open() 控制屏幕并阻止其他进程。可以最小化打开吗?

python-2.7 - 在openpyxl中使用 `append`时如何应用单元格样式?

c++ - Qt 非阻塞叠加对话框

python - Python 中的函数组合运算符

python - 如何使用 Autokey 移动应用程序窗口?

python - Pandas:取消堆叠 DataFrame 的一列

python - 使用 argsort 进行 Numpy 索引

python-2.7 - OpenCV - 使用python从字符串中提取字母

c++ - VC++ 可再发行版 2012 或 2013 或 2015?

android - 我想为 android 和 ios 构建一个视频游戏应用程序,但我担心从哪里开始