Enero 17, 2018, 01:38:05 am

Autor Tema: [Código-PyQT4] Manejo de Stock sencillo V1 - JaAViEr  (Leído 1245 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JaAViEr

  • ¡ Programming the world !
  • Colaborador
  • ****
  • Mensajes: 8218
  • http://ethereumchile.cl
    • Ver Perfil
    • Ethereum Chile
[Código-PyQT4] Manejo de Stock sencillo V1 - JaAViEr
« en: Abril 25, 2014, 05:02:48 pm »
Hola, muy buenos días.

Hace unos días re-re-re-re-tome PyQT4 & SQLite, con lo que se me ocurrió hacer un programa (a forma de práctica) que me ayude a manejar el Stock de productos, con opción de:
  • Eliminar Producto
  • Agregar Producto
  • Actualizar Producto
El programa luce exactamente así:


Para Editar o Actualizar Producto primero debemos seleccionar el producto y posteriormente dar clic en el botón de la acción que deseamos realizar
Actualizar Producto:

Agregar Producto:


Sin más preámbulos , el código:

Código: (python) You are not allowed to view links. Register or Login
# -*- coding: cp1252 -*-

from PyQt4 import QtCore, QtGui
import sys, sqlite3

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
return s

class Formulario(QtGui.QWidget):

def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)
self.setFixedSize(591, 471)
self.gridLayout = QtGui.QGridLayout(self)
self.label = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label, 0, 0, 1, 2)
self.treeWidget = QtGui.QTreeWidget(self)
self.treeWidget.header().setDefaultSectionSize(150)
self.gridLayout.addWidget(self.treeWidget, 1, 0, 1, 3)
self.boton_eliminar = QtGui.QPushButton(self)
self.gridLayout.addWidget(self.boton_eliminar, 2, 0, 1, 1)
self.boton_agregar = QtGui.QPushButton(self)
self.gridLayout.addWidget(self.boton_agregar, 2, 1, 1, 1)
self.boton_actualizar = QtGui.QPushButton(self)
self.gridLayout.addWidget(self.boton_actualizar, 2, 2, 1, 1)
self.setWindowTitle("Visualizador de Stock")
self.label.setText(_fromUtf8("Información del stock actual:"))
self.treeWidget.headerItem().setText(0, "ID")
self.treeWidget.headerItem().setText(1, "Producto")
self.treeWidget.headerItem().setText(2, "Precio unitario")
self.treeWidget.headerItem().setText(3, "Cantidad")
__sortingEnabled = self.treeWidget.isSortingEnabled()
self.treeWidget.setSortingEnabled(False)

self.conexion = sqlite3.connect("stock.db")
self.controla = self.conexion.cursor()
try:
self.controla.execute("CREATE TABLE stock (id int, nombre text, precio int, cantidad int)")
self.controla.execute("INSERT INTO stock VALUES (1, 'Producto Demo', 2500, 100)")
self.commit()
except:
pass

self.treeWidget.setSortingEnabled(__sortingEnabled)
self.boton_eliminar.setText("Eliminar producto")
self.boton_agregar.setText("Agregar producto")
self.boton_actualizar.setText(_fromUtf8("Actualizar información"))
self.connect(self.boton_eliminar, QtCore.SIGNAL("clicked()"), self.eliminar)
self.connect(self.boton_agregar, QtCore.SIGNAL("clicked()"), self.agregar)
self.connect(self.boton_actualizar, QtCore.SIGNAL("clicked()"), self.actualizar)
self.connect(self.treeWidget, QtCore.SIGNAL("itemPressed(QTreeWidgetItem*, int)"), self.seleccion)
self.carga()

def carga(self):

self.treeWidget.reset()
self.controla.execute("SELECT * FROM stock")
l = 0
for row in self.controla:
item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
id, nombre, precio, cantidad = row
self.treeWidget.topLevelItem(l).setText(0, str(id))
self.treeWidget.topLevelItem(l).setText(1, nombre)
self.treeWidget.topLevelItem(l).setText(2, str(precio))
self.treeWidget.topLevelItem(l).setText(3, str(cantidad))
item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
l = l + 1

self.conexion.commit()

def agregar(self):

agregar.show()

def seleccion(self, qt, i):
self.item = self.treeWidget.currentItem()
self.id_prod = self.item.text(0)
self.nombre_prod = self.item.text(1)
self.precio_prod = self.item.text(2)
self.cantidad_prod = self.item.text(3)

def eliminar(self):
if self.id_prod:
reply = QtGui.QMessageBox.question(self,  'Message',  _fromUtf8('¿Estás seguro?'),  QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes)
if reply == QtGui.QMessageBox.Yes:
self.controla.execute("DELETE FROM stock WHERE id = %s" % self.id_prod)
self.conexion.commit()
self.carga()

def actualizar(self):

actualizar.cargador(str(self.id_prod), self.nombre_prod, str(self.precio_prod), str(self.cantidad_prod))
actualizar.show()

class Agregar(QtGui.QWidget):

def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)
self.setFixedSize(400, 151)
self.gridLayout = QtGui.QGridLayout(self)
self.label_nombre = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_nombre, 0, 0, 1, 1)
self.input_nombre = QtGui.QLineEdit(self)
self.gridLayout.addWidget(self.input_nombre, 0, 2, 1, 1)
self.label_precio = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_precio, 1, 0, 1, 1)
self.input_precio = QtGui.QLineEdit(self)
self.gridLayout.addWidget(self.input_precio, 1, 2, 1, 1)
self.label_cantidad = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_cantidad, 2, 0, 1, 2)
self.input_cantidad = QtGui.QLineEdit(self)
self.gridLayout.addWidget(self.input_cantidad, 2, 2, 1, 1)
self.input_id = QtGui.QLineEdit(self)
self.gridLayout.addWidget(self.input_id, 3, 2, 1, 1)
self.label_id = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_id, 3, 0, 1, 1)
self.boton_agregar = QtGui.QPushButton(self)
self.gridLayout.addWidget(self.boton_agregar, 4, 0, 1, 3)
self.setWindowTitle("Agregar producto")
self.label_nombre.setText("Nombre:")
self.label_precio.setText("Precio:")
self.label_cantidad.setText("Cantidad:")
self.label_id.setText("ID:")
self.boton_agregar.setText("Agregar")
self.connect(self.boton_agregar, QtCore.SIGNAL("clicked()"), self.agregar_producto)

def agregar_producto(self):

self.conexion = sqlite3.connect("stock.db")
self.get = self.conexion.cursor()
id = str(self.input_id.text())
nombre = str(self.input_nombre.text())
precio = str(self.input_precio.text())
cantidad = str(self.input_cantidad.text())
query = "SELECT * FROM stock WHERE id = %s" % id
if self.get.execute(query).fetchone() != None:
QtGui.QMessageBox.question(self,  'Alerta',  _fromUtf8('El ID ya está asociado a otro producto.'))
else:
self.get.execute("INSERT INTO stock VALUES (%s, '%s', %s, %s)" % (int(id), nombre, int(precio), int(cantidad)))
self.conexion.commit()
form.carga()
self.hide()

class Actualizar(QtGui.QWidget):

def __init__(self):

QtGui.QWidget.__init__(self)
self.setFixedSize(400, 151)
self.gridLayout = QtGui.QGridLayout(self)
self.label_nombre = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_nombre, 0, 0, 1, 1)
self.input_nombre = QtGui.QLineEdit(self)
self.gridLayout.addWidget(self.input_nombre, 0, 2, 1, 1)
self.label_precio = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_precio, 1, 0, 1, 1)
self.input_precio = QtGui.QLineEdit(self)
self.gridLayout.addWidget(self.input_precio, 1, 2, 1, 1)
self.label_cantidad = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_cantidad, 2, 0, 1, 2)
self.input_cantidad = QtGui.QLineEdit(self)
self.gridLayout.addWidget(self.input_cantidad, 2, 2, 1, 1)
self.label_id = QtGui.QLabel(self)
self.gridLayout.addWidget(self.label_id, 3, 0, 1, 1)
self.input_id = QtGui.QLineEdit(self)
self.input_id.setDisabled(True)
self.gridLayout.addWidget(self.input_id, 3, 2, 1, 1)
self.boton_actualizar = QtGui.QPushButton(self)
self.gridLayout.addWidget(self.boton_actualizar, 4, 0, 1, 3)
self.setWindowTitle("Agregar producto")
self.label_nombre.setText("Nombre:")
self.label_precio.setText("Precio:")
self.label_cantidad.setText("Cantidad:")
self.label_id.setText("ID:")
self.boton_actualizar.setText("Actualizar")
self.connect(self.boton_actualizar, QtCore.SIGNAL("clicked()"), self.actualizar)

def cargador(self, id="", nombre="", precio="", cantidad=""):

self.input_id.setText(id)
self.input_nombre.setText(nombre)
self.input_precio.setText(precio)
self.input_cantidad.setText(cantidad)

def actualizar(self):

self.id = str(self.input_id.text())
self.nombre = str(self.input_nombre.text())
self.precio = str(self.input_precio.text())
self.cantidad = str(self.input_cantidad.text())
self.conexion = sqlite3.connect("stock.db")
self.get = self.conexion.cursor()
query = "UPDATE stock SET nombre = '%s', precio = %s, cantidad = %s WHERE id = %s " % (self.nombre, int(self.precio), int(self.cantidad), int(self.id))
try:
self.get.execute(query)
self.conexion.commit()
form.carga()
self.hide()
QtGui.QMessageBox.question(self,  'Alerta',  _fromUtf8('Producto actualizado correctamente.'))
except:
QtGui.QMessageBox.question(self,  'Alerta',  _fromUtf8('No se pudo actualizar.'))

app = QtGui.QApplication(sys.argv)
actualizar = Actualizar()
agregar = Agregar()
form = Formulario()
form.show()
app.exec_()
¡MI TWITTER You are not allowed to view links. Register or Login!
You are not allowed to view links. Register or Login !


exclamation
[Código-PyQT4]Calculadora - JaAViEr

Iniciado por JaAViEr

6 Respuestas
2309 Vistas
Último mensaje Julio 03, 2011, 09:34:18 pm
por JaAViEr
exclamation
[Código-PyQT4]All in one - JaAViEr(0x5d)

Iniciado por JaAViEr

0 Respuestas
1063 Vistas
Último mensaje Febrero 10, 2012, 10:04:46 pm
por JaAViEr
exclamation
[Código-PyQT4]Protector de Archivo - JaAViEr

Iniciado por JaAViEr

0 Respuestas
1180 Vistas
Último mensaje Abril 25, 2014, 09:54:14 pm
por JaAViEr
exclamation
[Código-PyQT4] IconFinder - JaAViEr | 0x5d

Iniciado por JaAViEr

7 Respuestas
2792 Vistas
Último mensaje Noviembre 01, 2013, 08:42:58 am
por JaAViEr
exclamation
[Código-PyQT4]View Source - JaAViEr

Iniciado por JaAViEr

0 Respuestas
930 Vistas
Último mensaje Julio 01, 2011, 01:52:09 am
por JaAViEr
exclamation
[Código-PyQT4]Html Helper - JaAViEr

Iniciado por JaAViEr

3 Respuestas
1755 Vistas
Último mensaje ſeptiembre 14, 2011, 02:54:11 pm
por JaAViEr
exclamation
[Código-PyQT4]Calculadora por secuencias - JaAViEr(0x5d)

Iniciado por JaAViEr

1 Respuestas
1127 Vistas
Último mensaje Diciembre 25, 2011, 01:15:23 pm
por daryo
exclamation
[Código-PyQT4]Ultimas menciones Twitter - JaAViEr

Iniciado por JaAViEr

0 Respuestas
1455 Vistas
Último mensaje ſeptiembre 08, 2011, 06:06:17 pm
por JaAViEr
xx
[Código-PyQT4] Escaner de Puertos - JaAViEr | 0x5d

Iniciado por JaAViEr

17 Respuestas
8635 Vistas
Último mensaje Noviembre 02, 2013, 11:00:19 pm
por The X-C3LL
exclamation
[Código-PyQT4]Extractor de imágenes - JaAViEr(0x5d)

Iniciado por JaAViEr

0 Respuestas
991 Vistas
Último mensaje Diciembre 24, 2011, 01:49:38 pm
por JaAViEr