Форум сайта python.su
Что-то не могу разобраться с этими layout'ами. С первого взгляда всё просто и удобно, но когда хочется того, что надо тебе, как-то “простота” перестаёт радовать.
Впрочем, я грешу на то, что сам просто не разобрался, как нужное сделать.
В общем, вопросы (картинка сюда что-то не вставляется, выложил на http://www.postimage.org/image.php?v=PqP0FIS):
- Как сделать так, чтобы layout был во всю ClientArea формы? И автоматически ресайзился вместе с ней?
- Два верхних label при ресайзе ведут себя ожидаемо, а нижний TextEdit остаётся по возможности “на месте” (то есть, если layout уменьшать, то он будет уменьшаться, но если увеличивать - увеличиваться он не будет). Как бы его сделать во всю ширину и чтобы он увеличивался с увеличением формы?
Может, у кого есть ссылка на хорошее руководство по этим layouts? Оф. доку читал, но там как-то не очень понятно: описано много того, что можно сделать, но как сделать то, что мне тут надо, я не нашёл.
Отредактировано (Авг. 27, 2010 10:42:54)
Офлайн
>>>Form.setLayout();
import sys
from PyQt4 import QtGui
app=QtGui.QApplication(sys.argv);
form=QtGui.QWidget();
ed_1=QtGui.QLineEdit();
ed_2=QtGui.QLineEdit();
text=QtGui.QTextEdit();
lay=QtGui.QVBoxLayout();
lay.addWidget(ed_1);
lay.addWidget(ed_2);
lay.addWidget(text);
form.setLayout(lay);
form.show();
app.exec();
Отредактировано (Авг. 27, 2010 12:54:36)
Офлайн
Спасибо, но как бы ещё сделать, чтобы у двух верхних полей метки были, а TextEdit под ними - во всю их ширину (подозреваю, надо добавить layout для едитов, layout для текста )?
Плюс как бы ещё все контролы к бортам прижать, то есть, чтобы промежутка край формы-край контрола не было?
Офлайн
Почитай тут:
http://forum.vingrad.ru/forum/topic-159421/kw-pyqt.html
или
тут
Да и посмотри в примерах к PyQt, ну или на Хабре, или еще где.(примеров много)
Офлайн
Я в дизайнере никогда вручную лэйауты не создавал, там есть очень удобное и умное автоматическое выравнивание.
Офлайн
Здорово, всем спасибо.
В моём случае оказалось, что у layout есть такие вещи как setSpacing (это я быстро нашёл) и setContentsMargins (а вот на это я долго не мог наткнуться), которые как раз призваны решить озвученные проблемы.
Так что более-менее разобрался с этим вопросом.
Офлайн