PyQt - Gerenciamento de Layout

Um widget GUI pode ser colocado dentro da janela do contêiner especificando suas coordenadas absolutas medidas em pixels. As coordenadas são relativas às dimensões da janela definidas pelo método setGeometry ().

Sintaxe setGeometry ()

QWidget.setGeometry(xpos, ypos, width, height)

No fragmento de código a seguir, a janela de nível superior com dimensões de 300 por 200 pixels é exibida na posição (10, 10) no monitor.

import sys
from PyQt4 import QtGui

def window():
   app = QtGui.QApplication(sys.argv)
   w = QtGui.QWidget()
	
   b = QtGui.QPushButton(w)
   b.setText("Hello World!")
   b.move(50,20)
	
   w.setGeometry(10,10,300,200)
   w.setWindowTitle(“PyQt”)
   w.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   window()

UMA PushButton widget é adicionado na janela e colocado em uma posição 50 pixels à direita e 20 pixels abaixo da posição superior esquerda da janela.

este Absolute Positioning, no entanto, não é adequado pelos seguintes motivos -

  • A posição do widget não muda, mesmo se a janela for redimensionada.

  • A aparência pode não ser uniforme em dispositivos de exibição diferentes com resoluções diferentes.

  • A modificação no layout é difícil, pois pode ser necessário redesenhar todo o formulário.

A API PyQt fornece classes de layout para um gerenciamento mais elegante do posicionamento de widgets dentro do contêiner. As vantagens dos gerenciadores de layout sobre o posicionamento absoluto são -

  • Os widgets dentro da janela são redimensionados automaticamente.

  • Garante aparência uniforme em dispositivos de exibição com diferentes resoluções.

  • Adicionar ou remover widget dinamicamente é possível sem ter que redesenhar.

Aqui está a lista de classes que discutiremos uma a uma neste capítulo.

Sr. Não. Classes e descrição
1 QBoxLayout

A classe QBoxLayout alinha os widgets verticalmente ou horizontalmente. Suas classes derivadas são QVBoxLayout (para organizar widgets verticalmente) e QHBoxLayout (para organizar widgets horizontalmente).

2 QGridLayout

Um objeto de classe GridLayout se apresenta com uma grade de células organizadas em linhas e colunas. A classe contém o método addWidget (). Qualquer widget pode ser adicionado especificando o número de linhas e colunas da célula.

3 QFormLayout

QFormLayout é uma maneira conveniente de criar o formulário de duas colunas, em que cada linha consiste em um campo de entrada associado a um rótulo. Por convenção, a coluna esquerda contém o rótulo e a coluna direita contém um campo de entrada.