En este capítulo del tutorial de Python 3 más PyQt5 continuamos viendo como realizar consultas a bases
de datos MySQL, en el capítulo anterior: http://jquery-manual.blogspot.com/2015/07/20-python-pyqt-interfaz-grafica-qtsql.html ya vimos como insertar registros en una tabla llamada 'usuarios' y en esta ocasión empezaremos con la construcción de una aplicación que nos permita administrar dicha tabla, es decir, seleccionar, editar y eliminar. Concretamente en este capítulo veremos como seleccionar todos los registros e incluir fila a fila en un objeto de la clase QTableWidget con sus respectivas columnas, filas y campos.
Más información sobre la clase QTableWidget: http://pyqt.sourceforge.net/Docs/PyQt4/qtablewidget.html
Más información sobre la clase QTableWidgetItem: http://pyqt.sourceforge.net/Docs/PyQt4/qtablewidgetitem.html
administrar.pyw
import sys from PyQt5.QtWidgets import QApplication, QDialog, QGridLayout, QMessageBox, QTableWidget, QTableWidgetItem from PyQt5 import uic from PyQt5.QtSql import QSqlDatabase, QSqlQuery class Dialogo(QDialog): def __init__(self): QDialog.__init__(self) self.setWindowTitle("Administrar usuarios") #Título self.resize(800, 600) #Tamaño inicial self.layout = QGridLayout() #Crear un layout grid self.setLayout(self.layout) #Agregar el layout al cuadro de diálogo self.table = QTableWidget() #Crear la tabla self.layout.addWidget(self.table) #Agregar la tabla al layout #Establecer conexión a la base de datos MySql self.db = QSqlDatabase.addDatabase('QMYSQL') self.db.setHostName("localhost") self.db.setDatabaseName("usuarios") self.db.setUserName("root") self.db.setPassword("password") self.Seleccionar() def Seleccionar(self): estado = self.db.open() if estado == False: QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard) else: self.table.setColumnCount(3) self.table.setHorizontalHeaderLabels(['id', 'nombre', 'edad']) row = 0 sql = "SELECT * FROM usuarios" query = QSqlQuery(sql) while query.next(): self.table.insertRow(row) id = QTableWidgetItem(str(query.value(0))) nombre = QTableWidgetItem(str(query.value(1))) edad = QTableWidgetItem(str(query.value(2))) self.table.setItem(row, 0, id) self.table.setItem(row, 1, nombre) self.table.setItem(row, 2, edad) row = row + 1 self.db.close() app = QApplication(sys.argv) dialogo = Dialogo() dialogo.show() app.exec_()
No hay comentarios:
Publicar un comentario