Форум сайта python.su
Как заставить компоненты мгновенно менять масштаб при растяжении или сжатии основного окна?
Пробовал проставить все размеры через процентное соотношение от width() и height() родительского окна, но они, мало того, что изначально применяют минимальные размеры окна, так еще и меняют значения только после появления сигнала.
Отредактировано Guljaca (Сен. 14, 2012 10:33:58)
Офлайн
В Qt это регулируется Size policy
button = QtGui.QPushButton(symbol) button.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
# -*- coding: utf-8 -*- import string import functools from PyQt4 import QtCore, QtGui NCOLUMNS = 10 SYMBOLS = string.ascii_lowercase + string.digits + string.punctuation class MainWidget(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) layout = QtGui.QGridLayout() row = column = 0 for symbol in SYMBOLS: button = QtGui.QPushButton(symbol) button.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) button.clicked.connect(functools.partial(self._on_button_pressed, symbol)) layout.addWidget(button, row, column) column += 1 if column >= NCOLUMNS: column = 0 row += 1 self.setLayout(layout) def _on_button_pressed(self, text): print text if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) widget = MainWidget() widget.show() sys.exit(app.exec_())
Отредактировано reclosedev (Сен. 14, 2012 17:43:47)
Офлайн
setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) с кнопками работает, а что с HTML текстом?
self.label = QLabel() self.label.setAlignment(top) self.label.setText(u'\ <TR>\ <TD WIDTH=400 rowspan=4 ><img src=' + self.fon + u' Width=400 VSPACE=0 HSPACE=0\</TD>\ ') self.label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
reclosedevУчту.
Для обсуждения Qt и GUI программирования есть специальный раздел
Офлайн