Python 为什么一些小部件不拉伸以填充布局中的最大空间?

Python 为什么一些小部件不拉伸以填充布局中的最大空间?,python,pyqt,Python,Pyqt,当我创建一个QGridLayout并向其中添加一些小部件时,一些小部件不会拉伸以填充包含它的布局部分 class Grid(QGridLayout): def __init__(self, grid_widget): arrow = QPixmap("icons/arrow.png") #initial image is facing up self.arrows = [] locs = [(0,1),

当我创建一个QGridLayout并向其中添加一些小部件时,一些小部件不会拉伸以填充包含它的布局部分

class Grid(QGridLayout):
    def __init__(self, grid_widget):
        arrow = QPixmap("icons/arrow.png") #initial image is facing up
        self.arrows = []
        locs = [(0,1),
                (0,2),
                (1,2),
                (2,2),
                (2,1),
                (2,0),
                (1,0),
                (0,0)]

        for rot in range(len(locs)):
            transform = QTransform().rotate(45*rot)
            icon = arrow.transformed(transform, Qt.SmoothTransformation)
            self.arrows.append(ExpandButton(icon, rot, grid_widget)) #ExpandButton inherits from QPushButton

        for i, loc in enumerate(locs):
            self.addWidget(self.arrows[i], loc[0], loc[1])
    
        self.addWidget(grid_widget, 1, 1)

如您所见,侧面的QpushButton不会像顶部的QpushButton一样拉伸以填充布局。有没有办法解决这个问题,使两侧的QpushButton垂直拉伸以填充布局,就像顶部的按钮水平拉伸以填充布局一样?

据我所知,按钮(默认设置)仅水平扩展-每个人都期望低按钮

您必须设置垂直和水平扩展

button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

button.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
?@furas解决方案有效,谢谢!你能把它贴在下面让我接受吗?我以前试过这样做,当时我没有按钮作为自己的类,但它不起作用,所以我从来没有试过。@furas,你知道小部件为什么不会自动填满最大空间吗?@JonathanLiu看看它们的默认大小策略。每个小部件都不一样。例如,请参阅:这似乎在中不起作用。“为什么?”BueNestNT Qt的重要内容是可视化的GUI构建器,它允许你构建和测试GUI——它是为C++代码而不是Python创建的,但仍然可以测试不同的属性(大小策略、扩展等),然后在Python代码中使用这些信息。