Форум сайта python.su
Как можно осуществить следующее:
Задать фиксированный размер окна (черный контур) и при этом в рамках него задать QGridLayout другого фиксированного размера (фиолетовый контур)?
Для чего:
От действия к действию необходимо свое количество виджетов на форме, и при использовании QGridLayout в некоторых случаях все сильно “размазывается”по окну", что не удобно для использования. Возможно есть варианты проще о которых я не знаю.
setFixedSize в QGridLayout изначально задает границы, выходит надо как-то инициализировать его внутри другого окна (черный контур большего размера, в моем случае)?
Отредактировано gmaksim (Июль 31, 2017 11:11:35)
Прикреплённый файлы:
1.png (9,1 KБ)
Офлайн
На сколько я знаю, для QGridLayout нельзя задать фиксированные размеры элементов.
Я так понимаю, Вам нужно, чтобы левый бокс с кнопками не растягивался сильно.Это вполне можно осуществить.
Основная схема такая. Делаете основной Grid 1, состоящий из, скажем, 5-ти столбцов. В первый вставите вертикальный бокс с кнопками, остальные четыре можете объединить, а потом в них засунете другой Grid 2(ну тут, как Вам удобно). А теперь главная фишка:
self.grid1.setColumnStretch(1,5)
Офлайн
Мне нужно, чтобы окно было всегда одно размера.
А при смене функции к функции (в каждой свой GUI) - элементы могли размещаться внутри этого окна не растягиваясь по нему, а так, как будет указано (например - функция один 2 на 2 в окне 5 на 5, следующая функция 3 на 4 в окне 5 на 5).
Как-то так.
Ваш вариант, к сожалению, никак не получается применить (или не понимаю как).
Отредактировано gmaksim (Авг. 1, 2017 16:06:42)
Офлайн
В текущем реализованном варианте, если задать
self.layout = QGridLayout() self.setLayout(self.layout) self.setGeometry(100, 100, 800, 800)
Прикреплённый файлы:
2.png (7,4 KБ)
Офлайн
Действительно, я Вас совершенно не так понял.
Писать код мне некогда, но можете попробовать такой вариант.
Допустим, у вас три модуля (назовём их GUI 1, 2, 3). Их Вам надо вставить в GUI 0 с размерами, которые прописаны во вставляемых файлах. Эти размеры запишите в переменные, будете их извлекать из главной оболочки в функциях один, два и т.д.
В главном файле создайте grid с двумя полями. В левый будете вставлять оболочку из модуля, а в правый вставлять пустой label.
В функции вставляющие модули пропишите:
self.grid.setColumnMinimumWidth(1,X)
Офлайн
Открой для себя распорку и не мучайся.
Офлайн
Kyrym
Попробую, если нет других способов. Неужели все так решают этот вопрос (или я не так подхожу к этой задаче)?
Rodegast
QTroll.setRasporka? Можно подробнее, пожалуйста?
Офлайн
Они в дизайнере с левой стороны, ниже компоновщиков.
Офлайн
Rodegast
https://www.qt.io/?
Офлайн
С тобой всё понятно. Мучайся дальше.
Офлайн