Pyqt. W jaki sposób rozmieścić komponenty o różnych rozmiarach na formularzu?

Odpowiedz Nowy wątek
2018-12-13 10:03
0

Bawię się programowaniem od wielu lat, ale layoutów w PyQt nie mogę załapać. Ani w Qt Designerze, ani programowo. Mówią, że to bardzo proste. Do rzeczy. Mam taki program:

import sys

from PyQt4.QtCore import *
from PyQt4.QtGui import *

app = QApplication(sys.argv)
w = QWidget()
glay = QGridLayout(w)
glay.addWidget(QLabel("1"), 0, 0)
glay.addWidget(QLabel("2"), 0, 1, 1, 3)
glay.addWidget(QLabel("3"), 4, 0, 1, 2)
glay.addWidget(QLabel("4"), 4, 2, 1, 3)

qsrand(QTime.currentTime().msec())

for label in w.findChildren(QLabel):
    color = QColor(qrand() % 256, qrand() % 256, qrand() % 256)
    label.setStyleSheet('.QLabel{{background: rgb({}, {}, {});}}'.format(color.red(), color.green(), color.blue()))

w.show()
sys.exit(app.exec_())

Zależy mi na tym, aby komponenty 3 i 4 miały wysokość 2 wierszy podczas, gdy 1 i 2 wysokość np. 6. Dobrze by było, aby przy powiększaniu programu, tylko komponenty 1 i 2 zmieniały wysokość lub zachowane byłyby proporcje wysokości.

edytowany 1x, ostatnio: xenix33, 2018-12-13 10:08

Pozostało 580 znaków

2018-12-13 11:04
2018-12-13 11:13
0

By móc ustawiać sobie elementy QT, to muszą być one umieszczone na np w gridzie. JA bym do tego użył QGridLayoutu, tutorial poniżej:
http://www.poketcode.com/en/pyqt4/layouts/index.html


"Chodzenie po wodzie i tworzenie oprogramowania wg specyfikacji są łatwe, o ile woda i specyfikacja są zamrożone" - Edward V. Berard

Pozostało 580 znaków

2018-12-13 11:50
0

Czyli kicha jednym słowem. Te toturiale nic mi nie dają. Ale dzięki za zainteresowanie. Popróbujcie w miarę czasu. Może komuś się uda.
P.S. O to mi chodziło:

glay.addWidget(QLabel("1"), 0, 0, 3, 1)
glay.addWidget(QLabel("2"), 0, 1, 3, 4)
glay.addWidget(QLabel("3"), 4, 0, 1, 3)
glay.addWidget(QLabel("4"), 4, 2, 1, 3)
glay.setSpacing(10)

Ale jakby ktoś mi wytłumaczył tę funkcję: glay.addWidget(). Jak są obliczne parametry?

edytowany 1x, ostatnio: xenix33, 2018-12-13 14:08

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0