PyQt5 Pestañas (tabs)

En este artículo aprenderá a usar pestañas con PyQt5. Primero mostraremos el código completo, luego explicaremos. PyQt5 tiene un widget para crear pestañas conocido como QTabWidget. El QTabWidget puede contener pestañas (QWidgets), que tienen widgets en ellas, como etiquetas, botones, imágenes, etc.
PyQt5 ejemplo de pestañas
Ejemplo completo de pestañas PyQt5:

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QAction, QTabWidget,QVBoxLayout
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
 
class App(QMainWindow):
 
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 pestañas'
        self.left = 0
        self.top = 0
        self.width = 300
        self.height = 200
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
 
        self.table_widget = MyTableWidget(self)
        self.setCentralWidget(self.table_widget)
 
        self.show()
 
class MyTableWidget(QWidget):        
 
    def __init__(self, parent):   
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)
 
        # Inicializar pantalla de pestañas
        self.tabs = QTabWidget()
        self.tab1 = QWidget() 
        self.tab2 = QWidget()
        self.tabs.resize(300,200) 
 
        # Agregar pestañas
        self.tabs.addTab(self.tab1,"Pestaña 1")
        self.tabs.addTab(self.tab2,"Pestaña 2")
 
        # Crear primera pestaña
        self.tab1.layout = QVBoxLayout(self)
        self.pushButton1 = QPushButton("PyQt5 botón")
        self.tab1.layout.addWidget(self.pushButton1)
        self.tab1.setLayout(self.tab1.layout)
 
        # Agregar pestañas al widget       
        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)
 
    @pyqtSlot()
    def on_click(self):
        print("\n")
        for currentQTableWidgetItem in self.tableWidget.selectedItems():
            print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
Explicación:
Para agregar una tabla a una ventana, creamos una nueva clase:

class MyTableWidget(QWidget)
Inicializamos la pantalla de pestañas creando un QTabWidget y dos QWidgets para pestañas.

self.tabs = QTabWidget()
self.tab1 = QWidget() 
self.tab2 = QWidget()
self.tabs.resize(300,200)
Luego agregamos estas pestañas al widget de pestañas:

self.tabs.addTab(self.tab1,"Pestaña 1")
self.tabs.addTab(self.tab2,"Pestaña 2")
El contenido de una pestaña se crea utilizando:

self.tab1.layout = QVBoxLayout(self)
self.pushButton1 = QPushButton("PyQt5 botón")
self.tab1.layout.addWidget(self.pushButton1)
self.tab1.setLayout(self.tab1.layout)
Finalmente agregamos las pestañas al widget:
self.layout.addWidget(self.tabs)
self.setLayout(self.layout)
no olvide agregar el widget de pestañas personalizado a la ventana:

self.table_widget = MyTableWidget(self)
self.setCentralWidget(self.table_widget)


AdelanteAtras

 

Comentarios

  1. Buenas, una pregunta:
    Me gustaría saber que función cumple esta parte del codigo:


    @pyqtSlot()
    def on_click(self):
    print("\n")
    for currentQTableWidgetItem in self.tableWidget.selectedItems():
    print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Ejemplos de interfaces gráficas realizadas con Python y PyQT5

Kivy - aún más fácil, más nativo

PyQT5 – Python Tutorial