PyQt QTab Widget

Resumo : neste tutorial, você aprenderá como usar o PyQt QTabWidgetpara criar um widget de aba.

Introdução ao PyQt QTabWidget

As guias permitem exibir informações relacionadas em páginas rotuladas separadas. As guias são úteis para dividir interfaces complexas em páginas menores que são mais fáceis de digerir pelos usuários.

Para criar um widget de guia, você usa a QTabWidgetclasse. As etapas para usar o QTabWidgetsão as seguintes:

Primeiro, crie o QTabWidgetobjeto:

tab = QTabWidget()
layout.addWidget(tab)Linguagem de código:  Python  ( python )

Segundo, crie uma página usando o QWidgetobjeto como contêiner e adicione widgets filhos ao QWidget:

page = QWidget(tab)
page_layout = QGridLayout()
page.setLayout(page_layout)Linguagem de código:  Python  ( python )

Terceiro, adicione uma página ao widget da guia usando o addTab()método:

tab.addTab(page,'Tab title')Linguagem de código:  Python  ( python )

Por fim, repita a segunda e a terceira etapas para adicionar mais páginas à guia.

Exemplo PyQt QTabWidget

O exemplo a seguir ilustra como criar um widget de guia com duas páginas:

import sys
from PyQt6.QtWidgets import QApplication, QWidget,  QFormLayout, QGridLayout, QTabWidget, QLineEdit, QDateEdit, QPushButton
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QTabWidget')

        main_layout = QGridLayout(self)
        self.setLayout(main_layout)

        # create a tab widget
        tab = QTabWidget(self)

        # personal page
        personal_page = QWidget(self)
        layout = QFormLayout()
        personal_page.setLayout(layout)
        layout.addRow('First Name:', QLineEdit(self))
        layout.addRow('Last Name:', QLineEdit(self))
        layout.addRow('DOB:', QDateEdit(self))

        # contact pane
        contact_page = QWidget(self)
        layout = QFormLayout()
        contact_page.setLayout(layout)
        layout.addRow('Phone Number:', QLineEdit(self))
        layout.addRow('Email Address:', QLineEdit(self))

        # add pane to the tab widget
        tab.addTab(personal_page, 'Personal Info')
        tab.addTab(contact_page, 'Contact Info')

        main_layout.addWidget(tab, 0, 0, 2, 1)
        main_layout.addWidget(QPushButton('Save'), 2, 0,
                              alignment=Qt.AlignmentFlag.AlignLeft)
        main_layout.addWidget(QPushButton('Cancel'), 2, 0,
                              alignment=Qt.AlignmentFlag.AlignRight)

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())Linguagem de código:  Python  ( python )

Saída:

Como funciona. (Vamos nos concentrar apenas na construção do widget da guia)

Primeiro, crie um widget de guia:

tab = QTabWidget(self)Linguagem de código:  Python  ( python )

Em seguida, crie uma página usando QWidgete defina seu layout como QFormLayout:

personal_page = QWidget(self)
layout = QFormLayout()
personal_page.setLayout(layout)Linguagem de código:  Python  ( python )

Em seguida, adicione QLineEditwidgets ao person_pagewidget:

layout.addRow('First Name:', QLineEdit(self))
layout.addRow('Last Name:', QLineEdit(self))
layout.addRow('DOB:', QDateEdit(self))Linguagem de código:  Python  ( python )

Depois disso, crie uma nova página que contenha os campos de informações de contato:

contact_page = QWidget(self)
layout = QFormLayout()
contact_page.setLayout(layout)
layout.addRow('Phone Number:', QLineEdit(self))
layout.addRow('Email Address:', QLineEdit(self))Linguagem de código:  Python  ( python )

Finalmente, adicione páginas à guia usando o add_tab()método:

tab.addTab(personal_page, 'Personal Info')
tab.addTab(contact_page, 'Contact Info')Linguagem de código:  Python  ( python )

Opções do QTabWidget

O QTabWidgettem algumas opções notáveis.

Móvel

Para tornar a guia móvel, você define a movablepropriedade como True:

tab = QTabWidget(self,movable=True)Linguagem de código:  Python  ( python )

Observe que você pode inicializar a propriedade móvel ao criar o widget de guia.

Ou você pode usar o setMovable()método do objeto widget de guia:

tab.setMovable(True)Linguagem de código:  Python  ( python )

abasFecháveis

Se tabsClosblefor verdade, as guias exibirão um botão fechar nas guias.

tab = QTabWidget(self,tabsClosable=True)Linguagem de código:  Python  ( python )

Ou você pode usar o setTabsClosable()método:

tab.setTabsClosable(True)Linguagem de código:  Python  ( python )

Quando o botão Fechar é clicado, o QTabWidgetemite o tabCloseRequestedsinal. Se quiser fechar a aba, você precisa se conectar a este sinal e implementar o código para fechar a aba correspondente.

Formato da guia

A aba tem duas formas arredondadas e triangulares. O arredondado é o padrão.

Para definir o formato da guia, você pode usar o tabShapeargumento ao criar um novo widget de guia:

tab = QTabWidget(self, tabShape=QTabWidget.TabShape.Triangular)Linguagem de código:  Python  ( python )

Ou você pode usar o setTabShape()método:

tab.setTabShape(QTabWidget.TabShape.Triangular)Linguagem de código:  Python  ( python )
PyQt QTabWidget TabShape

Posições da guia

As guias podem ter quatro posições determinadas pela TabPositionenumeração:

  • Norte
  • Sul
  • Oeste
  • Leste

Para definir a posição da guia, você pode usar o tabPositionargumento ao criar o widget da guia:

tab = QTabWidget(self, tabPosition=QTabWidget.TabPosition.West)Linguagem de código:  Python  ( python )

Ou você pode usar o setTabPosition()método:

tab.setTabPosition(QTabWidget.TabPosition.West)Linguagem de código:  Python  ( python )

Resumo

  • Use QTabWidgetpara criar um widget de guia.
  • As guias podem ser móveis, fecháveis ​​e ter posições diferentes.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *