Найти - Пользователи
Полная версия: PyQt4 динамичное масштабирование компонентов
Начало » GUI » PyQt4 динамичное масштабирование компонентов
1
Guljaca
Как заставить компоненты мгновенно менять масштаб при растяжении или сжатии основного окна?
Пробовал проставить все размеры через процентное соотношение от width() и height() родительского окна, но они, мало того, что изначально применяют минимальные размеры окна, так еще и меняют значения только после появления сигнала.

reclosedev
В Qt это регулируется Size policy
button = QtGui.QPushButton(symbol)
button.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
При условии, что все располагается в Layout'ах.

Пример из прошлого поста с добавлением изменения sizePolicy:
# -*- 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_())

P.S.
Для обсуждения Qt и GUI программирования есть специальный раздел
Guljaca
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 программирования есть специальный раздел
Учту.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB