Приношу свои извинения, если это не совсем ответ (это немного длинно для комментариев), но мне интересно, может быть, версия PyQt, которую вы используете, может быть причиной.Я использую 4.8.3 (я думаю), и когда я строю диалог таким образом, используя QGridLayout, все столбцы по умолчанию имеют одинаковый размер.Вот (очень, очень, очень грубый) пример:
from PyQt4 import QtGui, QtCore
import sys
class launcher(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
mainlayout = QtGui.QGridLayout()
buttons = [['a', 'aaaa', 'aaaaaaa', 'a'],
['b', 'bbbbbbbbbb', 'bbbbb', 'b'],
['c','c','c', 'c']]
for i, buttonrow in enumerate(buttons):
for j, button in enumerate(buttonrow):
mainlayout.addWidget(QtGui.QPushButton(button), i, j)
self.setLayout(mainlayout)
self.exec_()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
g = launcher()
g.show()
Вот скриншот полученного диалога:
Надеюсь, это похожек тому, что вы пытаетесь сделать.