Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4 динамичное масштабирование компонентов [RSS Feed]

#1 Сен. 14, 2012 10:29:52

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 динамичное масштабирование компонентов

Как заставить компоненты мгновенно менять масштаб при растяжении или сжатии основного окна?
Пробовал проставить все размеры через процентное соотношение от width() и height() родительского окна, но они, мало того, что изначально применяют минимальные размеры окна, так еще и меняют значения только после появления сигнала.



Отредактировано Guljaca (Сен. 14, 2012 10:33:58)

Офлайн

#2 Сен. 14, 2012 17:42:09

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 динамичное масштабирование компонентов

В 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 программирования есть специальный раздел

Отредактировано reclosedev (Сен. 14, 2012 17:43:47)

Офлайн

#3 Сен. 14, 2012 20:11:11

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 динамичное масштабирование компонентов

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 программирования есть специальный раздел
Учту.



Офлайн

  • Начало
  • » GUI
  • » PyQt4 динамичное масштабирование компонентов[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version