Cómo usar Pyqt QtableWidget

Cómo usar Pyqt QtableWidget
Se utiliza una tabla para mostrar datos en un formato estructurado, de acuerdo con las filas y columnas. El QtableWidget La clase de PYQT se puede usar en Python para mostrar datos en forma tabular para tareas relacionadas con la investigación o el análisis de datos. El contenido de la tabla se puede generar a partir de diferentes tipos de almacenamiento, como listas o tablas bidimensionales, tablas de bases de datos, archivos JSON, etc. Se pueden crear una o más tablas usando QtableWidget En la aplicación PYQT. Este tutorial muestra cómo usar QtableWidget Para crear varios tipos de tablas usando el script de Python.

Métodos necesarios

El QtableWidget La clase incluye muchos métodos para realizar tareas relacionadas con la creación de la tabla. Algunos de los métodos más utilizados de esta clase se explican a continuación:

Nombre del método Objetivo
setRowCount () Se usa para definir el número de filas.
setColumnCount () Utilizado para definir el número de columnas.
sethorizontalheaderlabels () Se utiliza para configurar las etiquetas de encabezado de la mesa.
setItem () Utilizado para establecer el valor celular de la tabla.
resizeColumnstocontents () Se utiliza para cambiar el tamaño de las columnas de la tabla en función del contenido.
resonerowstocontents () Se utiliza para cambiar el tamaño de las filas de la tabla en función del contenido.
setMinimumWidth () Utilizado para establecer el ancho mínimo de la tabla.
setminimumheight () Utilizado para establecer la altura mínima de la mesa.
espectáculo() Se usa para mostrar la tabla.

Uso de QtableWidget

Las siguientes secciones proporcionan ejemplos simples para explicar cómo crear una tabla en la aplicación PYQT utilizando datos estáticos y datos de lista.

Ejemplo 1: Crear tabla simple usando datos estáticos

El siguiente script crea una tabla de datos estáticos con cinco filas y cuatro columnas utilizando el QtableWidget clase. Dos para Se han utilizado bucles con valores de rango en el script para agregar los datos estáticos a las celdas de la tabla. Las posiciones de fila y columna de cada celda se han agregado como el contenido de cada celda. El Qdesktopwidget se usa en el script para mostrar la ventana con la tabla en el centro de la pantalla.

# Importar bibliotecas necesarias
Sys de importación
de pyqt5.QtWidgets Import Qapplication, QMainWindow, QtableWidget, QtableWidgetItem, QDeskTopWidget
de pyqt5.Qtcore import QSize
# Definir clase para crear la tabla con datos estáticos
clase SimpleTable (QMainWindow):
def __init __ (self):
# Llame al constructor matriz
súper().__en eso__()
# Establezca el tamaño y el título de la ventana
ser.SetMinimumSize (QSize (420, 150))
ser.setwindowtitle ("tabla simple con datos estáticos")
# Crear la tabla con las propiedades necesarias
tabla = QtableWidget (self)
mesa.setColumnCount (4)
mesa.setRowCount (5)
mesa.setMinimumwidth (500)
mesa.SetMinimumheight (500)
# Establezca los encabezados de la mesa
mesa.Sethorizontalheaderlabels (["Header-1", "Header-2", "Header-3", "Header-4"])
# Establecer los valores de la tabla
Para I en el rango (5):
para j en el rango (4):
mesa.setItem (i, j, qtablewidgetitem ("fila-" + str (i + 1) + ", col-" + str (j + 1)))
# Cambiar el tamaño de las filas y columnas en función del contenido
mesa.resizeColumnstocontents ()
mesa.resonerowstocontents ()
# Muestra la tabla
mesa.espectáculo()
# Muestra la ventana en el centro de la pantalla
ganar = yo.FrameGeometry ()
pos = qDesktopWidget ().disponibleGeometry ().centro()
ganar.Movecenter (POS)
ser.mover (ganar.arriba a la izquierda())
ser.espectáculo()
# Crear objeto de aplicación y ejecutar la aplicación
APP = QAPPLICATION (SYS.argv)
MW = SimpleTable ()
MW.espectáculo()
aplicación.exec ()

Aparecerá la siguiente ventana con una tabla. El script anterior se ejecuta. Según los valores del para bucles, el valor celular de la primera fila y la primera columna es 'Fila-1, col-1,'y el valor celular de la última fila y última columna es'Fila-5, Col-4.'

Ejemplo 2: Crear tabla con tiP de herramienta utilizando datos de diccionario y lista

El siguiente script crea una tabla con el contenido de un diccionario de Python y una lista utilizando el QtableWidget clase. El script también agrega un texto de punta de herramienta para el encabezado de la tabla. Un diccionario de Python llamado marcas también se declara en el guión. Los códigos del curso se utilizan como valores clave del diccionario. Se declara una lista de Python para definir las ID de estudiante. Los valores clave del diccionario se agregan al encabezado de la tabla, los valores de la lista se agregan a la primera columna de la tabla, y los valores del diccionario se agregan a las otras columnas de la tabla.

# Importar módulos necesarios
Sys de importación
de pyqt5.QtWidgets Import Qapplication, QtableWidget, QtableWidgetItem, QDeskTopWidget
# Declarar una variable de diccionario con marcas
Marcas = 'CSE-401': [78, 93, 67, 88, 78],
'CSE-404': [90, 59, 82, 73, 89],
'CSE-406': [81, 80, 74, 83, 67],
'CSE-407': [81, 80, 98, 83, 72]
class tableFromList (QtableWidget):
def __init __ (self, data, *args):
# Llame al constructor de padres
QtableWidget.__init __ (yo, *args)
# Declarar una lista de las ID de estudiante
ser.Id_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Establecer las configuraciones necesarias Fot de la tabla
ser.datos = datos
ser.resizeColumnstocontents ()
ser.resonerowstocontents ()
ser.setColumnWidth (0, 100)
para i en el rango (4):
ser.setColumnWidth (i, 80)
ser.setMinimumwidth (400)
ser.setWindowtitle ("Hoja de marca")
# Declarar la variable para establecer el contenido del encabezado
encabezados = []
encabezado.adjuntar(")
# para que Loop lea las teclas del diccionario
para n, clave en enumerado (ordenado (yo mismo.datos.llaves())):
encabezado.anular (clave)
# para que el bucle lea los valores del diccionario
para m, artículo en enumerado (yo.datos [clave]):
Id = qtableWidgetItem (self.Id_list [m])
ser.SetItem (M, 0, ID)
newVal = QtableWidgetItem (STR (item))
ser.SetItem (M, N+1, Newval)
# Establezca la etiqueta del encabezado de la mesa
ser.Sethorizontalheaderlabels (encabezados)
# Establezca las información sobre herramientas para los encabezados
ser.horizontalheaderitem (1).SetOoltip ("Multimedia")
ser.horizontalheaderitem (2).SetOoltip ("Artificial inteligente")
ser.horizontalheaderitem (3).SetToolTip ("Base de datos avanzada")
ser.horizontalheaderitem (4).SetToolTip ("Programación UNIX")
# Lea el valor de celda particular
ser.hecho clic.conectar (yo.al hacer clic)
# Muestra la ventana en el centro de la pantalla
ganar = yo.FrameGeometry ()
pos = qDesktopWidget ().disponibleGeometry ().centro()
ganar.Movecenter (POS)
ser.mover (ganar.arriba a la izquierda())
ser.espectáculo()
Def on_click (self):
para itemval en uno mismo.SelectedItems ()::
# Lea el valor del encabezado basado en la celda seleccionada
sujeto = yo.horizontalheaderitem (itemval.columna()).texto()
# Imprima la información detallada de la marca
imprimir ("\ n", yo.Id_list [itemval.fila ()], "Got", itemval.text (), "in", sujeto)
# Crear objeto de aplicación y ejecutar la aplicación
APP = QAPPLICATION (SYS.argv)
Tabla = TableFromList (Marcas, 5, 5)
mesa.espectáculo()
aplicación.exec ()

La siguiente ventana con la tabla aparecerá después de ejecutar el script anterior.

Conclusión

Este tutorial le mostró cómo crear tablas con datos fijos, datos del diccionario y datos de lista utilizando dos ejemplos. Las tablas también se pueden crear con datos dinámicos utilizando tablas de bases de datos u otras fuentes de datos.