Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt5 Фиксированный размер окна и QGridLayout [RSS Feed]

#1 Июль 31, 2017 11:10:25

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

Как можно осуществить следующее:
Задать фиксированный размер окна (черный контур) и при этом в рамках него задать QGridLayout другого фиксированного размера (фиолетовый контур)?

Для чего:
От действия к действию необходимо свое количество виджетов на форме, и при использовании QGridLayout в некоторых случаях все сильно “размазывается”по окну", что не удобно для использования. Возможно есть варианты проще о которых я не знаю.

setFixedSize в QGridLayout изначально задает границы, выходит надо как-то инициализировать его внутри другого окна (черный контур большего размера, в моем случае)?

Отредактировано gmaksim (Июль 31, 2017 11:11:35)

Прикреплённый файлы:
attachment 1.png (9,1 KБ)

Офлайн

#2 Июль 31, 2017 15:14:57

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

На сколько я знаю, для QGridLayout нельзя задать фиксированные размеры элементов.
Я так понимаю, Вам нужно, чтобы левый бокс с кнопками не растягивался сильно.Это вполне можно осуществить.
Основная схема такая. Делаете основной Grid 1, состоящий из, скажем, 5-ти столбцов. В первый вставите вертикальный бокс с кнопками, остальные четыре можете объединить, а потом в них засунете другой Grid 2(ну тут, как Вам удобно). А теперь главная фишка:

 self.grid1.setColumnStretch(1,5)
В скобках первая цифра - номер столбца ( в нашем случае - второй столбец), вторая цифра степень растяжения. По умолчанию растяжение 0. Т.о. первый столбец, возможно, и не будет растягиваться совсем.

Офлайн

#3 Авг. 1, 2017 16:01:34

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

Мне нужно, чтобы окно было всегда одно размера.
А при смене функции к функции (в каждой свой GUI) - элементы могли размещаться внутри этого окна не растягиваясь по нему, а так, как будет указано (например - функция один 2 на 2 в окне 5 на 5, следующая функция 3 на 4 в окне 5 на 5).
Как-то так.

Ваш вариант, к сожалению, никак не получается применить (или не понимаю как).

Отредактировано gmaksim (Авг. 1, 2017 16:06:42)

Офлайн

#4 Авг. 1, 2017 16:07:51

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

В текущем реализованном варианте, если задать

         self.layout = QGridLayout()
         self.setLayout(self.layout)
         self.setGeometry(100, 100, 800, 800)
800 на 800, то все последующие элементы (если всего, скажем, это одно поле ввода и одна кнопка сохранения) растянутся на эти самые 800 на 800, а надо, чтобы они были примерно как на 2.png.

Прикреплённый файлы:
attachment 2.png (7,4 KБ)

Офлайн

#5 Авг. 1, 2017 18:29:36

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

Действительно, я Вас совершенно не так понял.
Писать код мне некогда, но можете попробовать такой вариант.
Допустим, у вас три модуля (назовём их GUI 1, 2, 3). Их Вам надо вставить в GUI 0 с размерами, которые прописаны во вставляемых файлах. Эти размеры запишите в переменные, будете их извлекать из главной оболочки в функциях один, два и т.д.
В главном файле создайте grid с двумя полями. В левый будете вставлять оболочку из модуля, а в правый вставлять пустой label.
В функции вставляющие модули пропишите:

 self.grid.setColumnMinimumWidth(1,X)
где X - это разность ширины Вашего чёрной рамки и ширины вставляемой оболочки (которую вы извлечёте из модуля).

Офлайн

#6 Авг. 1, 2017 21:45:18

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

Открой для себя распорку и не мучайся.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Авг. 1, 2017 21:59:13

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

Kyrym
Попробую, если нет других способов. Неужели все так решают этот вопрос (или я не так подхожу к этой задаче)?

Rodegast
QTroll.setRasporka? Можно подробнее, пожалуйста?

Офлайн

#8 Авг. 1, 2017 22:34:05

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

Они в дизайнере с левой стороны, ниже компоновщиков.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Авг. 2, 2017 09:29:54

gmaksim
От: Россия
Зарегистрирован: 2017-07-17
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

Офлайн

#10 Авг. 2, 2017 14:03:41

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

PyQt5 Фиксированный размер окна и QGridLayout

С тобой всё понятно. Мучайся дальше.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

  • Начало
  • » GUI
  • » PyQt5 Фиксированный размер окна и QGridLayout[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version