elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Código-PyQT4] Manejo de Stock sencillo V1 - JaAViEr
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Código-PyQT4] Manejo de Stock sencillo V1 - JaAViEr  (Leído 1,630 veces)
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
[Código-PyQT4] Manejo de Stock sencillo V1 - JaAViEr
« en: 26 Abril 2014, 01:04 am »

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
  1. # -*- coding: cp1252 -*-
  2.  
  3. from PyQt4 import QtCore, QtGui
  4. import sys, sqlite3
  5.  
  6. try:
  7.    _fromUtf8 = QtCore.QString.fromUtf8
  8. except AttributeError:
  9.    def _fromUtf8(s):
  10. return s
  11.  
  12. class Formulario(QtGui.QWidget):
  13.  
  14. def __init__(self, parent=None):
  15.  
  16. QtGui.QWidget.__init__(self, parent)
  17. self.setFixedSize(591, 471)
  18. self.gridLayout = QtGui.QGridLayout(self)
  19. self.label = QtGui.QLabel(self)
  20. self.gridLayout.addWidget(self.label, 0, 0, 1, 2)
  21. self.treeWidget = QtGui.QTreeWidget(self)
  22. self.treeWidget.header().setDefaultSectionSize(150)
  23. self.gridLayout.addWidget(self.treeWidget, 1, 0, 1, 3)
  24. self.boton_eliminar = QtGui.QPushButton(self)
  25. self.gridLayout.addWidget(self.boton_eliminar, 2, 0, 1, 1)
  26. self.boton_agregar = QtGui.QPushButton(self)
  27. self.gridLayout.addWidget(self.boton_agregar, 2, 1, 1, 1)
  28. self.boton_actualizar = QtGui.QPushButton(self)
  29. self.gridLayout.addWidget(self.boton_actualizar, 2, 2, 1, 1)
  30. self.setWindowTitle("Visualizador de Stock")
  31. self.label.setText(_fromUtf8("Información del stock actual:"))
  32. self.treeWidget.headerItem().setText(0, "ID")
  33. self.treeWidget.headerItem().setText(1, "Producto")
  34. self.treeWidget.headerItem().setText(2, "Precio unitario")
  35. self.treeWidget.headerItem().setText(3, "Cantidad")
  36. __sortingEnabled = self.treeWidget.isSortingEnabled()
  37. self.treeWidget.setSortingEnabled(False)
  38.  
  39. self.conexion = sqlite3.connect("stock.db")
  40. self.controla = self.conexion.cursor()
  41. try:
  42. self.controla.execute("CREATE TABLE stock (id int, nombre text, precio int, cantidad int)")
  43. self.controla.execute("INSERT INTO stock VALUES (1, 'Producto Demo', 2500, 100)")
  44. self.commit()
  45. except:
  46. pass
  47.  
  48. self.treeWidget.setSortingEnabled(__sortingEnabled)
  49. self.boton_eliminar.setText("Eliminar producto")
  50. self.boton_agregar.setText("Agregar producto")
  51. self.boton_actualizar.setText(_fromUtf8("Actualizar información"))
  52. self.connect(self.boton_eliminar, QtCore.SIGNAL("clicked()"), self.eliminar)
  53. self.connect(self.boton_agregar, QtCore.SIGNAL("clicked()"), self.agregar)
  54. self.connect(self.boton_actualizar, QtCore.SIGNAL("clicked()"), self.actualizar)
  55. self.connect(self.treeWidget, QtCore.SIGNAL("itemPressed(QTreeWidgetItem*, int)"), self.seleccion)
  56. self.carga()
  57.  
  58. def carga(self):
  59.  
  60. self.treeWidget.reset()
  61. self.controla.execute("SELECT * FROM stock")
  62. l = 0
  63. for row in self.controla:
  64. item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
  65. id, nombre, precio, cantidad = row
  66. self.treeWidget.topLevelItem(l).setText(0, str(id))
  67. self.treeWidget.topLevelItem(l).setText(1, nombre)
  68. self.treeWidget.topLevelItem(l).setText(2, str(precio))
  69. self.treeWidget.topLevelItem(l).setText(3, str(cantidad))
  70. item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
  71. l = l + 1
  72.  
  73. self.conexion.commit()
  74.  
  75. def agregar(self):
  76.  
  77. agregar.show()
  78.  
  79. def seleccion(self, qt, i):
  80. self.item = self.treeWidget.currentItem()
  81. self.id_prod = self.item.text(0)
  82. self.nombre_prod = self.item.text(1)
  83. self.precio_prod = self.item.text(2)
  84. self.cantidad_prod = self.item.text(3)
  85.  
  86. def eliminar(self):
  87. if self.id_prod:
  88. reply = QtGui.QMessageBox.question(self,  'Message',  _fromUtf8('¿Estás seguro?'),  QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes)
  89. if reply == QtGui.QMessageBox.Yes:
  90. self.controla.execute("DELETE FROM stock WHERE id = %s" % self.id_prod)
  91. self.conexion.commit()
  92. self.carga()
  93.  
  94. def actualizar(self):
  95.  
  96. actualizar.cargador(str(self.id_prod), self.nombre_prod, str(self.precio_prod), str(self.cantidad_prod))
  97. actualizar.show()
  98.  
  99. class Agregar(QtGui.QWidget):
  100.  
  101. def __init__(self, parent=None):
  102.  
  103. QtGui.QWidget.__init__(self, parent)
  104. self.setFixedSize(400, 151)
  105. self.gridLayout = QtGui.QGridLayout(self)
  106. self.label_nombre = QtGui.QLabel(self)
  107. self.gridLayout.addWidget(self.label_nombre, 0, 0, 1, 1)
  108. self.input_nombre = QtGui.QLineEdit(self)
  109. self.gridLayout.addWidget(self.input_nombre, 0, 2, 1, 1)
  110. self.label_precio = QtGui.QLabel(self)
  111. self.gridLayout.addWidget(self.label_precio, 1, 0, 1, 1)
  112. self.input_precio = QtGui.QLineEdit(self)
  113. self.gridLayout.addWidget(self.input_precio, 1, 2, 1, 1)
  114. self.label_cantidad = QtGui.QLabel(self)
  115. self.gridLayout.addWidget(self.label_cantidad, 2, 0, 1, 2)
  116. self.input_cantidad = QtGui.QLineEdit(self)
  117. self.gridLayout.addWidget(self.input_cantidad, 2, 2, 1, 1)
  118. self.input_id = QtGui.QLineEdit(self)
  119. self.gridLayout.addWidget(self.input_id, 3, 2, 1, 1)
  120. self.label_id = QtGui.QLabel(self)
  121. self.gridLayout.addWidget(self.label_id, 3, 0, 1, 1)
  122. self.boton_agregar = QtGui.QPushButton(self)
  123. self.gridLayout.addWidget(self.boton_agregar, 4, 0, 1, 3)
  124. self.setWindowTitle("Agregar producto")
  125. self.label_nombre.setText("Nombre:")
  126. self.label_precio.setText("Precio:")
  127. self.label_cantidad.setText("Cantidad:")
  128. self.label_id.setText("ID:")
  129. self.boton_agregar.setText("Agregar")
  130. self.connect(self.boton_agregar, QtCore.SIGNAL("clicked()"), self.agregar_producto)
  131.  
  132. def agregar_producto(self):
  133.  
  134. self.conexion = sqlite3.connect("stock.db")
  135. self.get = self.conexion.cursor()
  136. id = str(self.input_id.text())
  137. nombre = str(self.input_nombre.text())
  138. precio = str(self.input_precio.text())
  139. cantidad = str(self.input_cantidad.text())
  140. query = "SELECT * FROM stock WHERE id = %s" % id
  141. if self.get.execute(query).fetchone() != None:
  142. QtGui.QMessageBox.question(self,  'Alerta',  _fromUtf8('El ID ya está asociado a otro producto.'))
  143. else:
  144. self.get.execute("INSERT INTO stock VALUES (%s, '%s', %s, %s)" % (int(id), nombre, int(precio), int(cantidad)))
  145. self.conexion.commit()
  146. form.carga()
  147. self.hide()
  148.  
  149. class Actualizar(QtGui.QWidget):
  150.  
  151. def __init__(self):
  152.  
  153. QtGui.QWidget.__init__(self)
  154. self.setFixedSize(400, 151)
  155. self.gridLayout = QtGui.QGridLayout(self)
  156. self.label_nombre = QtGui.QLabel(self)
  157. self.gridLayout.addWidget(self.label_nombre, 0, 0, 1, 1)
  158. self.input_nombre = QtGui.QLineEdit(self)
  159. self.gridLayout.addWidget(self.input_nombre, 0, 2, 1, 1)
  160. self.label_precio = QtGui.QLabel(self)
  161. self.gridLayout.addWidget(self.label_precio, 1, 0, 1, 1)
  162. self.input_precio = QtGui.QLineEdit(self)
  163. self.gridLayout.addWidget(self.input_precio, 1, 2, 1, 1)
  164. self.label_cantidad = QtGui.QLabel(self)
  165. self.gridLayout.addWidget(self.label_cantidad, 2, 0, 1, 2)
  166. self.input_cantidad = QtGui.QLineEdit(self)
  167. self.gridLayout.addWidget(self.input_cantidad, 2, 2, 1, 1)
  168. self.label_id = QtGui.QLabel(self)
  169. self.gridLayout.addWidget(self.label_id, 3, 0, 1, 1)
  170. self.input_id = QtGui.QLineEdit(self)
  171. self.input_id.setDisabled(True)
  172. self.gridLayout.addWidget(self.input_id, 3, 2, 1, 1)
  173. self.boton_actualizar = QtGui.QPushButton(self)
  174. self.gridLayout.addWidget(self.boton_actualizar, 4, 0, 1, 3)
  175. self.setWindowTitle("Agregar producto")
  176. self.label_nombre.setText("Nombre:")
  177. self.label_precio.setText("Precio:")
  178. self.label_cantidad.setText("Cantidad:")
  179. self.label_id.setText("ID:")
  180. self.boton_actualizar.setText("Actualizar")
  181. self.connect(self.boton_actualizar, QtCore.SIGNAL("clicked()"), self.actualizar)
  182.  
  183. def cargador(self, id="", nombre="", precio="", cantidad=""):
  184.  
  185. self.input_id.setText(id)
  186. self.input_nombre.setText(nombre)
  187. self.input_precio.setText(precio)
  188. self.input_cantidad.setText(cantidad)
  189.  
  190. def actualizar(self):
  191.  
  192. self.id = str(self.input_id.text())
  193. self.nombre = str(self.input_nombre.text())
  194. self.precio = str(self.input_precio.text())
  195. self.cantidad = str(self.input_cantidad.text())
  196. self.conexion = sqlite3.connect("stock.db")
  197. self.get = self.conexion.cursor()
  198. query = "UPDATE stock SET nombre = '%s', precio = %s, cantidad = %s WHERE id = %s " % (self.nombre, int(self.precio), int(self.cantidad), int(self.id))
  199. try:
  200. self.get.execute(query)
  201. self.conexion.commit()
  202. form.carga()
  203. self.hide()
  204. QtGui.QMessageBox.question(self,  'Alerta',  _fromUtf8('Producto actualizado correctamente.'))
  205. except:
  206. QtGui.QMessageBox.question(self,  'Alerta',  _fromUtf8('No se pudo actualizar.'))
  207.  
  208. app = QtGui.QApplication(sys.argv)
  209. actualizar = Actualizar()
  210. agregar = Agregar()
  211. form = Formulario()
  212. form.show()
  213. app.exec_()
  214.  

Fuente: http://codigo.ga/python/python-qt4-manejo-de-stock-sencillo-v1-jaavier/


« Última modificación: 14 Septiembre 2014, 08:16 am por 0x5d » En línea

Intrus0

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re:
« Respuesta #1 en: 4 Mayo 2014, 15:32 pm »

Duda de novato... Esta hecho en python, bien... Pero como consigues el entorno gráfico? ( no te rías que soy dummie total ;)

Enviado desde algún lugar no muy lejano usando Tapatalk


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Código-PyQT4]Calculadora - JaAViEr
Scripting
0x5d 3 4,005 Último mensaje 7 Julio 2011, 22:21 pm
por elhacker_carlos
[Código-PyQT4]All in one - JaAViEr(0x5d)
Scripting
0x5d 0 2,005 Último mensaje 11 Febrero 2012, 05:11 am
por 0x5d
[Código-Python]Código Ofuscado nº2 JaAViEr|0x5d [Actualizado]
Scripting
0x5d 6 5,423 Último mensaje 7 Mayo 2013, 23:52 pm
por CodeSource
[Código-PyQT4] IconFinder - JaAViEr | 0x5d
Scripting
0x5d 0 3,462 Último mensaje 31 Octubre 2013, 12:01 pm
por 0x5d
[Código-PyQT4]Protector de Archivo - JaAViEr
Scripting
0x5d 2 1,678 Último mensaje 27 Abril 2014, 06:42 am
por 0x5d
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines