
Llenar un QTableView con los registros de una tabla Sqlite
Publicado por william (4 intervenciones) el 25/09/2021 06:31:38
Hola. Estoy tratando de aprender este lenguaje y utilice el PyQt5 para diseñar un formulario o pantalla donde poder trabajar con los datos de una tabla de contactos. Mi consulta es que no sé como hacer para que al cargar este programa, el TableView se llene con los datos de la tabla que cree en Sqlite. Al menos creo que aprendiendo como hacer eso, creo poder hacer las funciones para cada uno de los botones que tengo ahi. En varios videos y paginas WEB he buscado como hacer eso pero en cada uno de esos recursos lo hacen de formas diferentes y la verdad estoy muy perdido con este tema. Yo vengo de programar en VisualFoxPro y ahi si que era demasiado fácil hacer esto y pensé que como Python es el lenguaje de mayor demanda estas cosas eran más fáciles de lograr, pero me he demorado muchisimo tiempo tratando de hacer esta parte gráfica y eso que descubrí el PyQt5 y el diseñador que me alegro la vida por un momento y al menos ya puedo adelantar esa parte de creación de formularios o pantallas. Intenté hacerlas con Tkinter pero jamas logré poner las cosas en las posiciones que quería. Y ademas hay que hacer todo manualmente, es decir, poniendo las columnas y las filas donde necesitaba poner los labels o los textbox. En ese sentido si es mucho mas practico FoxPro, pero como hay que actualizarnos pues toca aprender otras cosas.
Dejo lo que llevo de mi código python y me gustaria también recomendaciones de como aprender este lenguaje.
-------------------------
#Conexion a la BD
import sqlite3
try:
bd = sqlite3.connect("contactos.db")
cursor = bd.cursor()
sentencia = "SELECT * FROM contactos;"
cursor.execute(sentencia)
resultado = cursor.fetchall()
#print(resultado)
except sqlite3.OperationalError as error:
print("Error al abrir:", error)
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
#Fija el tamaño para que no se pueda ampliar o disminuir
MainWindow.setFixedSize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame1 = QtWidgets.QFrame(self.centralwidget)
#(pos-horizontal, pos-vertical, largo, alto)
self.frame1.setGeometry(QtCore.QRect(10, 40, 780, 75))
self.frame1.setAccessibleName("")
self.frame1.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame1.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame1.setObjectName("frame1")
self.pushButton = QtWidgets.QPushButton(self.frame1)
self.pushButton.setGeometry(QtCore.QRect(10, 20, 80, 26))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.frame1)
self.pushButton_2.setGeometry(QtCore.QRect(100, 20, 80, 26))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(self.frame1)
self.pushButton_3.setGeometry(QtCore.QRect(190, 20, 80, 26))
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_4 = QtWidgets.QPushButton(self.frame1)
self.pushButton_4.setGeometry(QtCore.QRect(280, 20, 80, 26))
self.pushButton_4.setObjectName("pushButton_4")
self.pushButton_5 = QtWidgets.QPushButton(self.frame1)
self.pushButton_5.setGeometry(QtCore.QRect(385, 20, 80, 26))
self.pushButton_5.setObjectName("pushButton_5")
self.label1 = QtWidgets.QLabel(self.centralwidget)
self.label1.setGeometry(QtCore.QRect(320, 10, 565, 16))
self.label1.setObjectName("label1")
self.tableView = QtWidgets.QTableView(self.centralwidget)
#(pos-horizontal, pos-vertical, largo, alto)
self.tableView.setGeometry(QtCore.QRect(40, 160, 720, 391))
self.tableView.setObjectName("tableView")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Main-Window"))
self.pushButton.setText(_translate("MainWindow", "Nuevo"))
self.pushButton_2.setText(_translate("MainWindow", "Buscar"))
self.pushButton_3.setText(_translate("MainWindow", "Modificar"))
self.pushButton_4.setText(_translate("MainWindow", "Eliminar"))
self.pushButton_5.setText(_translate("MainWindow", "Salir"))
self.label1.setText(_translate("MainWindow", "Administrador de Contactos"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
-------- ESTE ES EL SCRIPT DE CREACION DE LA TABLA
CREATE TABLE "contactos" (
"Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"PrimerNom" TEXT NOT NULL,
"SegundoNom" TEXT NOT NULL,
"PrimerApe" TEXT NOT NULL,
"SegundoApe" TEXT NOT NULL,
"Telefono1" TEXT,
"Empresa" TEXT,
"DirEmpresa" TEXT,
"TelEmpresa" TEXT,
"Etiqueta1" TEXT,
"Email" TEXT,
"Ciudad" TEXT,
"URL" TEXT,
"Notas" TEXT
)
Dejo lo que llevo de mi código python y me gustaria también recomendaciones de como aprender este lenguaje.
-------------------------
#Conexion a la BD
import sqlite3
try:
bd = sqlite3.connect("contactos.db")
cursor = bd.cursor()
sentencia = "SELECT * FROM contactos;"
cursor.execute(sentencia)
resultado = cursor.fetchall()
#print(resultado)
except sqlite3.OperationalError as error:
print("Error al abrir:", error)
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
#Fija el tamaño para que no se pueda ampliar o disminuir
MainWindow.setFixedSize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame1 = QtWidgets.QFrame(self.centralwidget)
#(pos-horizontal, pos-vertical, largo, alto)
self.frame1.setGeometry(QtCore.QRect(10, 40, 780, 75))
self.frame1.setAccessibleName("")
self.frame1.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame1.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame1.setObjectName("frame1")
self.pushButton = QtWidgets.QPushButton(self.frame1)
self.pushButton.setGeometry(QtCore.QRect(10, 20, 80, 26))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.frame1)
self.pushButton_2.setGeometry(QtCore.QRect(100, 20, 80, 26))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(self.frame1)
self.pushButton_3.setGeometry(QtCore.QRect(190, 20, 80, 26))
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_4 = QtWidgets.QPushButton(self.frame1)
self.pushButton_4.setGeometry(QtCore.QRect(280, 20, 80, 26))
self.pushButton_4.setObjectName("pushButton_4")
self.pushButton_5 = QtWidgets.QPushButton(self.frame1)
self.pushButton_5.setGeometry(QtCore.QRect(385, 20, 80, 26))
self.pushButton_5.setObjectName("pushButton_5")
self.label1 = QtWidgets.QLabel(self.centralwidget)
self.label1.setGeometry(QtCore.QRect(320, 10, 565, 16))
self.label1.setObjectName("label1")
self.tableView = QtWidgets.QTableView(self.centralwidget)
#(pos-horizontal, pos-vertical, largo, alto)
self.tableView.setGeometry(QtCore.QRect(40, 160, 720, 391))
self.tableView.setObjectName("tableView")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Main-Window"))
self.pushButton.setText(_translate("MainWindow", "Nuevo"))
self.pushButton_2.setText(_translate("MainWindow", "Buscar"))
self.pushButton_3.setText(_translate("MainWindow", "Modificar"))
self.pushButton_4.setText(_translate("MainWindow", "Eliminar"))
self.pushButton_5.setText(_translate("MainWindow", "Salir"))
self.label1.setText(_translate("MainWindow", "Administrador de Contactos"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
-------- ESTE ES EL SCRIPT DE CREACION DE LA TABLA
CREATE TABLE "contactos" (
"Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"PrimerNom" TEXT NOT NULL,
"SegundoNom" TEXT NOT NULL,
"PrimerApe" TEXT NOT NULL,
"SegundoApe" TEXT NOT NULL,
"Telefono1" TEXT,
"Empresa" TEXT,
"DirEmpresa" TEXT,
"TelEmpresa" TEXT,
"Etiqueta1" TEXT,
"Email" TEXT,
"Ciudad" TEXT,
"URL" TEXT,
"Notas" TEXT
)
Valora esta pregunta


0