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

Jon*_*Liu 2 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),
                (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)
Run Code Online (Sandbox Code Playgroud)

结果

如您所见,侧面的 QPushButton 不会像顶部的 QPushButton 那样拉伸以填充布局。有什么办法可以解决这个问题,以便侧面的 QPushButtons 垂直拉伸以填充布局,例如顶部的 QPushButtons 如何水平拉伸以填充那里的布局?

fur*_*ras 5

据我所知,按钮(默认情况下)只能水平扩展 - 每个人都期望低按钮。

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

button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
Run Code Online (Sandbox Code Playgroud)