pyqt5でボタンをレイアウトするとき、setSpacing(0)を使えばウィジット間のスペースを最小にすることが出来ます。これを使って、次のようなコードを書いてみました。

import sys
from PyQt5.QtWidgets import (QWidget,
    QVBoxLayout, QHBoxLayout, QApplication, QPushButton, QLabel, QLineEdit)
from PyQt5 import*
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):
        #font=QtGui.QFont("00コミック7",20)

        btn1=QPushButton("1")
        btn1.setFixedSize(100,100)

        btn2=QPushButton("2")
        btn2.setFixedSize(120,100)

        btn3=QPushButton("3")
        btn3.setFixedSize(50,70)

        btn4=QPushButton("4")
        btn4.setFixedSize(90,120)

        btn5=QPushButton("5")
        btn5.setFixedSize(150,50)

        btn6=QPushButton("6")
        btn6.setFixedSize(70,100)

        btn7=QPushButton("7")
        btn7.setFixedSize(30,140)

        btn8=QPushButton("8")
        btn8.setFixedSize(100,100)



        layout=QVBoxLayout()
        layout.setSpacing(0)

        layout2=QHBoxLayout()
        layout2.setSpacing(0)
        layout2.addWidget(btn1,alignment=(Qt.AlignBottom | Qt.AlignRight))
        layout2.addWidget(btn2,alignment=(Qt.AlignBottom | Qt.AlignLeft))

        layout3=QHBoxLayout()
        layout3.setSpacing(0)
        layout3.addWidget(btn3,alignment=(Qt.AlignBottom | Qt.AlignRight))
        layout3.addWidget(btn4,alignment=(Qt.AlignBottom | Qt.AlignCenter))
        layout3.addWidget(btn5,alignment=(Qt.AlignBottom | Qt.AlignLeft))

        layout4=QHBoxLayout()
        layout4.setSpacing(0)
        layout4.addWidget(btn6,alignment=(Qt.AlignBottom | Qt.AlignRight))
        layout4.addWidget(btn7,alignment=(Qt.AlignBottom | Qt.AlignCenter))
        layout4.addWidget(btn8,alignment=(Qt.AlignBottom | Qt.AlignLeft))        

        layout.addLayout(layout2)
        layout.addLayout(layout3)
        layout.addLayout(layout4)

        self.setLayout(layout)

        self.setWindowTitle('Absolute')    
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

これを実行すると次のようなボタンのレイアウトが出来ます
画像
しかし、これではボタン6,7,8の間にスペースが残ってしまいます。このスペースをなくしたいです。