def __init__(self): """ Inicializa la ventana con la interfaz. """ #CSS para las labels y botones css = ''' label { font: 20px Courier-bold; } button { background: #ffcc99; padding: 5px 10px; font: 14px Courier-bold; color: #000000; } ''' cssProvider = Gtk.CssProvider() cssProvider.load_from_data(bytes(css.encode())) screen = Gdk.Screen.get_default() styleContext = Gtk.StyleContext() styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) #Creación tablas BD MethodsBD.tablas() builder = Gtk.Builder() #Asignamos a nuestro builder el archivo de nuestro proyecto Glade path = os.path.dirname(os.path.realpath(__file__)) file = os.path.join(path, 'formEntrada.glade') builder.add_from_file(file) self.vEntrada = builder.get_object("vEntrada") self.vEntrada.set_default_size(220, 150) self.btnClientes = builder.get_object("btnClientes") self.btnProdutos = builder.get_object("btnProdutos") self.btnSalir = builder.get_object("btnSalir") #Señales self.btnClientes.connect("clicked", self.on_btnClientes_clicked) self.btnProdutos.connect("clicked", self.on_btnProdutos_clicked) self.btnSalir.connect("clicked", self.on_btnSalir_clicked) self.vEntrada.connect("destroy", self.on_btnSalir_clicked) self.vEntrada.show_all()
def on_btnGuardar_clicked(self, boton): """Método que crea un pdf con la lista de clientes. :param boton: boton. :return: No devuelve ningún parámetro. """ #Cogemos los datos data = [] data.append( ["DNI", "Nombre", "Apellidos", "Sexo", "Telefono", "Direccion"]) clientes = MethodsBD.selectTablaClientes() for cliente in clientes: data.append([ cliente[0], cliente[1], cliente[2], cliente[3], cliente[4], cliente[5] ]) # Creamos el PDF file = 'ListaClientes.pdf' diractual = os.getcwd() pdf = SimpleDocTemplate(diractual + "/" + file, pagesize=letter) # Creamos una tabla table = Table(data) elementos = [] elementos.append(table) # Estilamos la tabla style = TableStyle([ ('BACKGROUND', (0, 0), (-1, 0), colors.burlywood), ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONTNAME', (0, 0), (-1, 0), 'Courier-Bold'), ('FONTSIZE', (0, 0), (-1, 0), 20), ('BOTTOMPADDING', (0, 0), (-1, 0), 15), ]) table.setStyle(style) # Alternamos colores de las filas numCols = len(data) for i in range(1, numCols): if i % 2 == 0: bc = colors.lightgrey else: bc = colors.ghostwhite colorCol = TableStyle([('BACKGROUND', (0, i), (-1, i), bc)]) table.setStyle(colorCol) # Añadimos bordes a la tabla bordes = TableStyle([('BOX', (0, 0), (-1, -1), 1, colors.black), ('LINEBEFORE', (0, 0), (-1, numCols), 1, colors.black), ('LINEABOVE', (0, 0), (-1, 1), 1, colors.black)]) table.setStyle(bordes) pdf.build(elementos) wb.open_new(diractual + "/" + file)
def dniBDCheck(self, dni): """Metodo que comprueba si el DNI del GTKEntry esta en la BD. :param dni: dni de la persona. :return boolean: True o False en función del resultado. """ clientesBD = MethodsBD.selectTablaClientes() for cliente in clientesBD: if cliente[0] == dni: return True return False
def idBDCheck(self, id): """Metodo que comprueba si la ID del GTKEntry está en la BD :param id: id del produto :return boolean: True o False en función del resultado. """ produtosBD = MethodsBD.selectTablaProductos() for produto in produtosBD: if produto[0] == id: return True return False
def tablaProdutoRefresh(self): """Metodo actualiza la tabla produtos :param: No recibe parámetros. :return: No devuelve ningún parámetro. """ self.modeloP.clear() self.produtos = [] produtosBD = MethodsBD.selectTablaProductos() for produto in produtosBD: self.produtos.append([produto[0], produto[1], produto[2], False]) for elemento in self.produtos: self.modeloP.append(elemento)
def tablaClienteRefresh(self): """Metodo actualiza la tabla clientes :param: No recibe parámetros. :return: No devuelve ningún parámetro. """ self.modeloC.clear() self.clientes = [] clientesBD = MethodsBD.selectTablaClientes() for cliente in clientesBD: self.clientes.append([ cliente[0], cliente[1], cliente[2], cliente[3], cliente[4], cliente[5] ]) for elemento in self.clientes: self.modeloC.append(elemento)
def __init__(self): """Inicializa la ventana de Gestión de Clientes con la interfaz. """ Gtk.Window.__init__(self, title="Xestión de Clientes") self.set_default_size(600, 400) boxV = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) #TABLA CLIENTES self.columnasC = [ "DNI", "Nome", "Apelido", "Sexo", "Telefono", "Direccion" ] self.modeloC = Gtk.ListStore(str, str, str, str, str, str) self.clientes = [] self.vista = Gtk.TreeView(model=self.modeloC) self.vista.set_hexpand(True) self.vista.set_vexpand(True) seleccion = self.vista.get_selection() seleccion.connect("changed", self.on_vista_changed) clientesBD = MethodsBD.selectTablaClientes() for cliente in clientesBD: self.clientes.append([ cliente[0], cliente[1], cliente[2], cliente[3], cliente[4], cliente[5] ]) for elemento in self.clientes: self.modeloC.append(elemento) for i in range(len(self.columnasC)): celda = Gtk.CellRendererText() celda.set_alignment(0.5, 0) self.columna = Gtk.TreeViewColumn(self.columnasC[i], celda, text=i) self.columna.set_alignment(0.5) self.columna.set_expand(True) self.vista.append_column(self.columna) boxV.pack_start(self.vista, True, True, 0) grid = Gtk.Grid(column_homogeneous=True, column_spacing=10, row_spacing=10) self.lblDni = Gtk.Label("DNI:") self.txtDni = Gtk.Entry() self.lblNome = Gtk.Label("Nome:") self.txtNome = Gtk.Entry() self.lblApelido = Gtk.Label("Apelido:") self.txtApelido = Gtk.Entry() self.lblSexo = Gtk.Label("Sexo:") self.txtSexo = Gtk.Entry() self.lblTelefono = Gtk.Label("Telefono:") self.txtTelefono = Gtk.Entry() self.lblDireccion = Gtk.Label("Dirección:") self.txtDireccion = Gtk.Entry() self.btnAplicar = Gtk.Button(label="Aplicar") self.btnGuardar = Gtk.Button(label="Guardar clientes en PDF") self.btnVolver = Gtk.Button(label="Volver") self.cmbAccion = Gtk.ComboBox() acciones = Gtk.ListStore(int, str) acciones.append([0, "Añadir"]) acciones.append([1, "Modificar"]) acciones.append([2, "Eliminar"]) self.cmbAccion.set_model(acciones) celdaTexto = Gtk.CellRendererText() self.cmbAccion.pack_start(celdaTexto, True) self.cmbAccion.add_attribute(celdaTexto, "text", 1) self.cmbAccion.set_active(0) grid.add(self.lblDni) grid.attach(self.txtDni, 0, 1, 1, 1) grid.attach_next_to(self.lblNome, self.lblDni, Gtk.PositionType.RIGHT, 1, 1) grid.attach(self.txtNome, 1, 1, 1, 1) grid.attach_next_to(self.lblApelido, self.lblNome, Gtk.PositionType.RIGHT, 1, 1) grid.attach(self.txtApelido, 2, 1, 1, 1) grid.attach_next_to(self.lblSexo, self.txtDni, Gtk.PositionType.BOTTOM, 1, 1) grid.attach(self.txtSexo, 0, 3, 1, 1) grid.attach_next_to(self.lblTelefono, self.lblSexo, Gtk.PositionType.RIGHT, 1, 1) grid.attach(self.txtTelefono, 1, 3, 1, 1) grid.attach_next_to(self.lblDireccion, self.lblTelefono, Gtk.PositionType.RIGHT, 1, 1) grid.attach(self.txtDireccion, 2, 3, 1, 1) grid.attach(self.cmbAccion, 1, 4, 1, 1) grid.attach(self.btnAplicar, 2, 5, 1, 1) grid.attach(self.btnGuardar, 0, 5, 1, 2) grid.attach(self.btnVolver, 1, 5, 1, 1) boxV.pack_start(grid, True, True, 10) self.add(boxV) self.show_all() #Señales self.btnVolver.connect("clicked", self.on_btnVolver_clicked) self.btnAplicar.connect("clicked", self.on_btnAplicar_clicked) self.btnGuardar.connect("clicked", self.on_btnGuardar_clicked) self.connect("destroy", self.on_btnSalir_clicked)
def on_btnAplicar_clicked(self, boton): """Metodo que según la opción del ComboBox, añade, modifica o elimina un valor de la tabla clientes. :param boton: boton :return: No devuelve ningún parámetro. """ modAcc = self.cmbAccion.get_model() indice = self.cmbAccion.get_active_iter() if modAcc[indice][0] == 0: #OPCION AÑADIR dniValid = self.dniCheck(self.txtDni.get_text()) sexValid = self.sexCheck(self.txtSexo.get_text()) tlfValid = self.tlfCheck(self.txtTelefono.get_text()) dniBDValid = self.dniBDCheck(self.txtDni.get_text()) if (dniBDValid == False and dniValid and sexValid and tlfValid and self.txtNome.get_text() != "" and self.txtApelido.get_text() != "" and self.txtDireccion.get_text() != ""): MethodsBD.insertTablaClientes(self.txtDni.get_text(), self.txtNome.get_text(), self.txtApelido.get_text(), self.txtSexo.get_text(), self.txtTelefono.get_text(), self.txtDireccion.get_text()) dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Cliente añadido Correctamente") dialog.run() dialog.destroy() self.tablaClienteRefresh() elif (tlfValid == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un teléfono válido") dialog.run() dialog.destroy() elif (sexValid == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un sexo válido") dialog.run() dialog.destroy() elif (self.txtNome.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un nome válido") dialog.run() dialog.destroy() elif (self.txtApelido.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un apelido válido") dialog.run() dialog.destroy() elif (self.txtDireccion.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce unha direccion válida") dialog.run() dialog.destroy() elif (dniValid == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un DNI válido") dialog.run() dialog.destroy() else: dialog = Gtk.MessageDialog( self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "El DNI ya se encuentra en la Base de datos") dialog.run() dialog.destroy() elif modAcc[indice][0] == 1: #OPCION MODIFICAR dniValid = self.dniCheck(self.txtDni.get_text()) sexValid = self.sexCheck(self.txtSexo.get_text()) tlfValid = self.tlfCheck(self.txtTelefono.get_text()) dniBDValid = self.dniBDCheck(self.txtDni.get_text()) if (dniBDValid and dniValid and sexValid and tlfValid and self.txtNome.get_text() != "" and self.txtApelido.get_text() != "" and self.txtDireccion.get_text() != ""): MethodsBD.updateTablaClientes(self.txtDni.get_text(), self.txtNome.get_text(), self.txtApelido.get_text(), self.txtSexo.get_text(), self.txtTelefono.get_text(), self.txtDireccion.get_text()) dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Cliente modificado correctamente") dialog.run() dialog.destroy() self.tablaClienteRefresh() elif (tlfValid == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un teléfono válido") dialog.run() dialog.destroy() elif (sexValid == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un sexo válido") dialog.run() dialog.destroy() elif (self.txtNome.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un nome válido") dialog.run() dialog.destroy() elif (self.txtApelido.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un apelido válido") dialog.run() dialog.destroy() elif (self.txtDireccion.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce unha direccion válida") dialog.run() dialog.destroy() elif (dniValid == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un DNI válido") dialog.run() dialog.destroy() else: dialog = Gtk.MessageDialog( self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "El DNI no se encuentra en la Base de datos") dialog.run() dialog.destroy() elif modAcc[indice][0] == 2: #OPCION ELIMINAR dniValid = self.dniCheck(self.txtDni.get_text()) dniBDValid = self.dniBDCheck(self.txtDni.get_text()) if (dniValid and dniBDValid): MethodsBD.deleteTablaClientes(self.txtDni.get_text()) dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Cliente eliminado correctamente") dialog.run() dialog.destroy() self.tablaClienteRefresh() elif (dniValid == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Introduzca un DNI correcto") dialog.run() dialog.destroy() else: dialog = Gtk.MessageDialog( self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "El DNI no se encuentra en la Base de datos") dialog.run() dialog.destroy()
def on_btnFactura_clicked(self, boton): """Método que crea un pdf con la factura del cliente y productos seleccionados. :param boton: boton. :return: No devuelve ningún parámetro. """ if self.produtos2 is not None: #Cogemos los datos a través del DNI del cliente modeldni = self.cmbCliente.get_model() dni = self.cmbCliente.get_active_iter() datosCli = MethodsBD.selectTablaClientesDni(modeldni[dni][0]) cliente = [] for cli in datosCli: cliente.append(["", "", "", "", 'Datos Cliente']) cliente.append(["", "", "", 'DNI: ', cli[0]]) cliente.append(["", "", "", 'Nome: ', cli[1]]) cliente.append(["", "", "", 'Apelidos: ', cli[2]]) cliente.append([ "", "", "", 'Direccion: ', cli[5], ]) cliente.append([""]) #Hacemos el modelo para la tabla de la factura, los datos de productos ya lo tenemos recogidos en una lista data = [] precioFinal = 0.0 data.append(["ID", "Nome", "Precio"]) for produto in self.produtos2: data.append([produto[0], produto[1], str(produto[2]) + " €"]) precioFinal = precioFinal + produto[2] data.append(['', 'PRECIO TOTAL:', str(precioFinal) + " €"]) # Creamos el PDF file = 'Factura' + cli[0] + '.pdf' diractual = os.getcwd() pdf = SimpleDocTemplate(diractual + "/" + file, pagesize=letter) # Agregamos datos del cliente datCli = Table(cliente, colWidths=50, rowHeights=15) numCols = len(cliente) datCli.setStyle( TableStyle([ ('TEXTCOLOR', (0, 0), (4, numCols - 1), colors.firebrick), ('ALIGN', (0, 0), (0, -1), 'LEFT'), ])) # Agregamos tabla de factura con los productos tablaFact = Table(data, colWidths=100, rowHeights=25) numCols = len(data) tablaFact.setStyle( TableStyle([ ('TEXTCOLOR', (0, 0), (2, 0), colors.firebrick), ('TEXTCOLOR', (0, numCols - 1), (2, numCols - 1), colors.red), ('ALIGN', (0, 0), (0, -1), 'LEFT'), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('BOX', (0, 0), (-1, numCols - 2), 1, colors.black), ('INNERGRID', (0, 0), (-1, numCols - 2), 0.5, colors.black) ])) # Añadimos los elementos al PDF elementos = [] elementos.append(datCli) elementos.append(tablaFact) pdf.build(elementos) wb.open_new(diractual + "/" + file)
def __init__(self): """Inicializa la ventana de Productos y Servicios con la interfaz. """ Gtk.Window.__init__(self, title="Produtos e Servizos") self.set_default_size(600, 400) self.notebook = Gtk.Notebook() self.add(self.notebook) #Notebook1 - PRODUTOS boxV = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) #TABLA PRODUTOS self.columnasP = ["ID", "Produto", "Precio(€)", ""] self.modeloP = Gtk.ListStore(int, str, int, bool) self.produtos = [] self.vista = Gtk.TreeView(model=self.modeloP) self.vista.set_hexpand(True) self.vista.set_vexpand(True) seleccion = self.vista.get_selection() seleccion.connect("changed", self.on_vista_changed) produtosBD = MethodsBD.selectTablaProductos() for produto in produtosBD: self.produtos.append([produto[0], produto[1], produto[2], False]) for elemento in self.produtos: self.modeloP.append(elemento) for i in range(len(self.columnasP)): if i == 3: celda = Gtk.CellRendererToggle() celda.connect("toggled", self.on_celdaCheck_toggled, self.modeloP) celda.set_alignment(0.5, 0) self.columna = Gtk.TreeViewColumn(self.columnasP[i], celda, active=i) self.columna.set_alignment(0.5) self.columna.set_expand(True) self.vista.append_column(self.columna) else: celda = Gtk.CellRendererText() celda.set_alignment(0.5, 0) self.columna = Gtk.TreeViewColumn(self.columnasP[i], celda, text=i) self.columna.set_alignment(0.5) self.columna.set_expand(True) self.vista.append_column(self.columna) boxV.pack_start(self.vista, True, True, 0) grid = Gtk.Grid(column_homogeneous=True, column_spacing=10, row_spacing=10) self.lblID = Gtk.Label("ID:") self.txtID = Gtk.Entry() self.lblProduto = Gtk.Label("Produto:") self.txtProduto = Gtk.Entry() self.lblPrecio = Gtk.Label("Precio:") self.txtPrecio = Gtk.Entry() self.btnAplicar = Gtk.Button(label="Aplicar") self.cmbAccion = Gtk.ComboBox() acciones = Gtk.ListStore(int, str) acciones.append([0, "Añadir"]) acciones.append([1, "Modificar"]) acciones.append([2, "Eliminar"]) self.cmbAccion.set_model(acciones) celdaTexto = Gtk.CellRendererText() self.cmbAccion.pack_start(celdaTexto, True) self.cmbAccion.add_attribute(celdaTexto, "text", 1) self.cmbAccion.set_active(0) self.btnVolver = Gtk.Button(label="Volver") grid.add(self.lblID) grid.attach(self.txtID, 0, 1, 1, 1) grid.attach_next_to(self.lblProduto, self.lblID, Gtk.PositionType.RIGHT, 1, 1) grid.attach(self.txtProduto, 1, 1, 1, 1) grid.attach_next_to(self.lblPrecio, self.lblProduto, Gtk.PositionType.RIGHT, 1, 1) grid.attach(self.txtPrecio, 2, 1, 1, 1) grid.attach(self.cmbAccion, 1, 4, 1, 1) grid.attach(self.btnAplicar, 2, 5, 1, 1) grid.attach(self.btnVolver, 0, 5, 1, 1) #Notebook2 - SERVIZO gridS = Gtk.Grid(column_homogeneous=True, column_spacing=10, row_spacing=10) self.lblServizo = Gtk.Label("FACTURA") self.lblFactura = Gtk.Label( "Seleccione os produtos na pestaña de produtos e logo o cliente o que quere facer a factura" ) self.btnFactura = Gtk.Button(label="Factura") self.btnVolver2 = Gtk.Button(label="Volver") #COMBO PARA LA FACTURA RECOGE DNI self.cmbCliente = Gtk.ComboBox() cli = Gtk.ListStore(str) datos = MethodsBD.selectTablaClientes() self.clientes = [] for clientes in datos: cli.append([clientes[0]]) self.cmbCliente.set_model(cli) celdaTexto = Gtk.CellRendererText() self.cmbCliente.pack_start(celdaTexto, True) self.cmbCliente.add_attribute(celdaTexto, "text", 0) self.cmbCliente.set_active(0) #VISTA DE PRODUCTOS PARA LA FACTURA self.columnasP2 = ["ID", "Produto", "Precio(€)"] self.modelo2 = Gtk.ListStore(int, str, int) self.vista2 = Gtk.TreeView(model=self.modelo2) self.vista2.set_hexpand(True) self.vista2.set_vexpand(True) self.produtos2 = [] for i in range(len(self.columnasP2)): celda2 = Gtk.CellRendererText() celda2.set_alignment(0.5, 0) self.columna2 = Gtk.TreeViewColumn(self.columnasP2[i], celda2, text=i) self.columna2.set_alignment(0.5) self.columna2.set_expand(True) self.vista2.append_column(self.columna2) gridS.attach(self.lblServizo, 1, 1, 2, 1) gridS.attach(self.vista2, 1, 2, 2, 1) gridS.attach(self.lblFactura, 1, 3, 2, 1) gridS.attach(self.cmbCliente, 1, 5, 1, 1) gridS.attach_next_to(self.btnFactura, self.cmbCliente, Gtk.PositionType.RIGHT, 1, 1) gridS.attach(self.btnVolver2, 1, 6, 2, 2) boxV.pack_start(grid, True, True, 10) self.notebook.append_page(boxV, Gtk.Label("Produtos")) self.notebook.append_page(gridS, Gtk.Label("Servizo")) self.show_all() # Señales self.btnVolver.connect("clicked", self.on_btnVolver_clicked) self.btnVolver2.connect("clicked", self.on_btnVolver_clicked) self.btnAplicar.connect("clicked", self.on_btnAplicar_clicked) self.btnFactura.connect("clicked", self.on_btnFactura_clicked) self.connect("destroy", self.on_btnSalir_clicked)
def on_btnAplicar_clicked(self, boton): """Metodo que según la opción del ComboBox, añade, modifica o elimina un valor de la tabla produtos. :param boton: boton :return: No devuelve ningún parámetro. """ modAcc = self.cmbAccion.get_model() indice = self.cmbAccion.get_active_iter() if modAcc[indice][0] == 0: # OPCION AÑADIR idBDValid = self.idBDCheck(int(self.txtID.get_text())) if (idBDValid == False and self.txtID.get_text().isdigit() and self.txtProduto.get_text() != "" and self.txtPrecio.get_text().isdigit()): MethodsBD.insertTablaProdutos(int(self.txtID.get_text()), self.txtProduto.get_text(), int(self.txtPrecio.get_text())) dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Produto añadido Correctamente") dialog.run() dialog.destroy() self.tablaProdutoRefresh() elif (self.txtID.get_text().isdigit() == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce unha ID válida") dialog.run() dialog.destroy() elif (self.txtProduto.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un nome válido") dialog.run() dialog.destroy() elif (idBDValid): dialog = Gtk.MessageDialog( self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "El ID del producto ya se encuentra en la base de datos") dialog.run() dialog.destroy() else: dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un precio válido") dialog.run() dialog.destroy() elif modAcc[indice][0] == 1: # OPCION MODIFICAR idBDValid = self.idBDCheck(int(self.txtID.get_text())) if (idBDValid and self.txtID.get_text().isdigit() and self.txtProduto.get_text() != "" and self.txtPrecio.get_text().isdigit()): MethodsBD.updateTablaProdutos(int(self.txtID.get_text()), self.txtProduto.get_text(), int(self.txtPrecio.get_text())) dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Produto modificado Correctamente") dialog.run() dialog.destroy() self.tablaProdutoRefresh() elif (self.txtID.get_text().isdigit() == False): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce unha ID válida") dialog.run() dialog.destroy() elif (self.txtProduto.get_text() == ""): dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un nome válido") dialog.run() dialog.destroy() elif (idBDValid == False): dialog = Gtk.MessageDialog( self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "El ID del producto no se encuentra en la base de datos") dialog.run() dialog.destroy() else: dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Introduce un precio válido") dialog.run() dialog.destroy() elif modAcc[indice][0] == 2: #OPCION ELIMINAR idBDValid = self.idBDCheck(int(self.txtID.get_text())) if (idBDValid): MethodsBD.deleteTablaProductos(self.txtID.get_text()) dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Produto eliminado correctamente") dialog.run() dialog.destroy() self.tablaProdutoRefresh() else: dialog = Gtk.MessageDialog( self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "El ID del producto no se encuentra en la base de datos") dialog.run() dialog.destroy()