Hola hace poco volvi a python despues de meses y retome mi proyecto de control de stock, pero quede trabado en una parte, ya consulte tutoriales y no encuentro el error y ni hablar de chat de IA saben menos que yo jaja entran en un bucle de errores... Tengo un ventana principal al hacer click en el boton AddProdButton_2 se abre una ventana nueva con entre otras cosas un QlistWidget llamado listWidget en el que quiero mostrar una consulta sqlite3, pero no logro hacerlo, puse un print al final del bucle for en la funcion SelecKits y los datos se imprimen correctamente si llamo al metodo show al final de la funcion se abre una nueva ventana a parte de la que ya tengo creada con solo el QlistWidget con el contenido de la consulta como se muestra en la imagen
![[Imagen: Corel.jpg]](https://i.ibb.co/sCxhw6t/Corel.jpg)
paso el codigo a ver si alguien me da una idea de donde estoy cometiendo el error, la clase ( class KitWg ) con la funcion ( def SelectKits )de la ventana del listWidget esta al final del codigo, Gracias de antemano, abrazo...
![[Imagen: Corel.jpg]](https://i.ibb.co/sCxhw6t/Corel.jpg)
paso el codigo a ver si alguien me da una idea de donde estoy cometiendo el error, la clase ( class KitWg ) con la funcion ( def SelectKits )de la ventana del listWidget esta al final del codigo, Gracias de antemano, abrazo...
Código:
import sys
import typing
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidgetItem, QListWidget, QTabWidget, QWidget, QListWidgetItem
from control.MainWindow import MainWindow
from control.KitsWindow import AddKitForm
from coneccion import Comunicacion
import sqlite3
#from creaKits import CreateKitsWidget
from control.KitsWindow import AddKitForm
class MyMainWindow(QMainWindow):
def __init__(self):
super(MyMainWindow, self).__init__()
self.ui = MainWindow()
self.ui.setupUi(self)
self.BaseDatos = Comunicacion()
self.BaseDatos.crear_tabla_productos()
self.mostrar_tabla()
self.selectArtLW = QListWidget()
#self.SelectKits()
#conectar botones a la funciones
self.ui.AddProdButton.clicked.connect(self.AddArt)
self.ui.AddProdButton.clicked.connect(self.mostrar_tabla)
self.ui.dELProdButton.clicked.connect(self.del_prod)
#self.ui.dELProdButton.clicked.connect(self.ClearLW)
#self.ui.dELProdButton.clicked.connect(self.SelectKits)
#self.ui.AddProdButton.clicked.connect(self.ClearLW)
#self.ui.AddProdButton.clicked.connect(self.SelectKits)
# Conecta la señal itemClicked del QTableWidget con la función que muestra los valores en los QLineEdit
self.ui.tableWidget.itemClicked.connect(self.mostrar_item_seleccionado)
# Conecta la señal editingFinished de los QLineEdit con la función para guardar los cambios
self.ui.CodLE.editingFinished.connect(self.guardar_cambios)
self.ui.ArtLE.editingFinished.connect(self.guardar_cambios)
self.ui.CantLE.editingFinished.connect(self.guardar_cambios)
self.ui.PrecioLE.editingFinished.connect(self.guardar_cambios)
#conectar señal para mostrar kits a crear
#self.ui.selectArtLW.itemSelectionChanged.connect(self.SeleccionKits)
self.ui.AddProdButton_2.clicked.connect(self.abrir)
#Logica Tab Productos
def AddArt(self):
Codigo = self.ui.CodLE.text().strip()
Articulo = self.ui.ArtLE.text().strip()
Cantidad = self.ui.CantLE.text().strip()
Talle = self.ui.TalleCB.currentText()
Color = self.ui.ColorCB.currentText()
Precio = self.ui.PrecioLE.text().strip()
try:
if Articulo:
if Articulo.strip():
self.BaseDatos.inserta_producto(Codigo, Articulo, Cantidad, Talle, Color, Precio)
else:
print("el nombre del articulo no puese estar vacio")
else:
print("codigo o articulo invalidos")
except sqlite3.Error as e:
print("Error en la base de datos:", e)
def del_prod(self):
pass
fila_seleccionada = self.ui.tableWidget.currentRow()
if fila_seleccionada >= 0:
id_valor = self.ui.tableWidget.item(fila_seleccionada, 0).text() # Obtiene el ID de la fila seleccionada
self.BaseDatos.eliminar(id_valor) # Llama a la función de borrado con el ID
self.mostrar_tabla() # Actualiza la tabla después de borrar el registro
else:
print("No se ha seleccionado ninguna fila.")
# Función para mostrar los valores del ítem seleccionado en los QLineEdit
def mostrar_item_seleccionado(self, item):
fila_seleccionada = item.row()
id_valor = self.ui.tableWidget.item(fila_seleccionada, 0).text()
cod_valor = self.ui.tableWidget.item(fila_seleccionada, 1).text()
articulo_valor = self.ui.tableWidget.item(fila_seleccionada, 2).text()
cant_valor = self.ui.tableWidget.item(fila_seleccionada, 3).text()
precio_valor= self.ui.tableWidget.item(fila_seleccionada, 6).text()
self.ui.CodLE.setText(cod_valor)
self.ui.ArtLE.setText(articulo_valor)
self.ui.CantLE.setText(cant_valor)
self.ui.PrecioLE.setText(precio_valor)
# Función para guardar los cambios realizados en los QLineEdit
def guardar_cambios(self):
if self.ui.tableWidget.currentRow() >= 0:
nuevo_codigo = self.ui.CodLE.text()
nuevo_articulo = self.ui.ArtLE.text()
nuevo_cantidad = self.ui.CantLE.text()
nuevo_precio = self.ui.PrecioLE.text()
if nuevo_codigo and nuevo_articulo and nuevo_cantidad and nuevo_precio:
fila_seleccionada = self.ui.tableWidget.currentRow()
id_valor = self.ui.tableWidget.item(fila_seleccionada, 0).text()
if nuevo_articulo.strip():
self.BaseDatos.actualizar_articulo(id_valor, nuevo_codigo, nuevo_articulo, nuevo_cantidad, nuevo_precio)
else:
print("El nombre del artículo no puede estar en blanco")
else:
print("Código y/o artículo inválidos")
else:
print("No se ha seleccionado ninguna fila.")
self.mostrar_tabla()
def mostrar_tabla(self):
resultado = self.BaseDatos.lectura_bd()
i = len(resultado)
self.ui.tableWidget.setRowCount(i)
tablerow = 0
for row in resultado:
item0 = QTableWidgetItem(str(row[0])) # str Convierte el Id a string
item1 = QTableWidgetItem(str(row[1]))
item2 = QTableWidgetItem(row[2])
item3 = QTableWidgetItem(str(row[3]))
item4 = QTableWidgetItem(row[4])
item5 = QTableWidgetItem(row[5])
item6 = QTableWidgetItem(str(row[6]))
self.ui.tableWidget.setItem(tablerow, 0, item0)
self.ui.tableWidget.setItem(tablerow, 1, item1)
self.ui.tableWidget.setItem(tablerow, 2, item2)
self.ui.tableWidget.setItem(tablerow, 3, item3)
self.ui.tableWidget.setItem(tablerow, 4, item4)
self.ui.tableWidget.setItem(tablerow, 5, item5)
self.ui.tableWidget.setItem(tablerow, 6, item6)
tablerow += 1
def abrir(self):
self.ventana = KitWg()
self.ventana.show()
#Fin Logica Tab Productos
# #Logica ventana Crear Kits
class KitWg(QtWidgets.QMainWindow, AddKitForm):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
AddKitForm.__init__(self)
self.setupUi(self)
self.BaseDatos = Comunicacion()
self.listWidget = QListWidget()
self.ui = AddKitForm()
def SelectKits(self):
#self.listWidget.clear()
DatosArt = self.BaseDatos.lectura_Art()
#listWidget = QListWidget(self)
# listWidget.addItem(['remeras'])
# if DatosArt:
for resultado in DatosArt:
listWidgetItem = QListWidgetItem(resultado[0]) # Agrega el "Artículo" como un elemento de la lista
self.listWidget.addItem(listWidgetItem)
print(resultado[0])
self.listWidget.show() #si agrego este metodo se abre una nueva ventana con el listwidget y el contenido de la consulta.
# def ClearLW(self):
# self.ui.listWidget.clear()
def show(self):
super().show()
self.SelectKits()
def main():
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
db = Comunicacion()