from PyQt5 import (QtWidgets, QtCore, QtGui)
from PyQt5.QtGui import QIcon
import sys, time
class myWindow(QtWidgets.QWidget):
def __init__(self, parent = None):
QtWidgets.QWidget.__init__(self, parent)
self.grid = QtWidgets.QGridLayout()
# 1
self.grid.setVerticalSpacing(0)
self.grid.setContentsMargins(0, 0, 0, 0)
self.button_1 = QtWidgets.QPushButton("1")
self.button_2 = QtWidgets.QPushButton("2")
# 2
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHeightForWidth(self.button_1.sizePolicy().hasHeightForWidth())
self.button_1.setSizePolicy(sizePolicy)
sizePolicy.setHeightForWidth(self.button_2.sizePolicy().hasHeightForWidth())
self.button_2.setSizePolicy(sizePolicy)
self.label = QtWidgets.QLabel("1")
self.label1 = QtWidgets.QLabel("2")
self.grid.setSpacing(0)
self.grid.addWidget(self.button_1, 0, 0)
self.grid.addWidget(self.label, 0, 1)
self.grid.addWidget(self.button_2, 1, 0)
self.grid.addWidget(self.label1, 1, 1)
self.setLayout(self.grid)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = myWindow()
window.setWindowTitle("test")
window.resize(300, 300)
window.show()
sys.exit(app.exec_())
Остальное регулировать размером самого гридлайоута посредством
self.grid.setGeometry(QtCore.QRect(80, 50, 110, 60))
в # 1, а сам грид запихивать в виджет, который уже и будет нужным размером окна (300, 300 в данном случае)