Aplicaciones

Curso Python. Práctica guiada I. Vídeo 59 APK PC

Hola este video estará relacionado con aplicacion android con python puedes ver en nuestra web una gran cantidad de aplicaciones para aplicacion android con python, recuerda que todo el contenido aquí es gratis solo te pedimos que compartas el articulo por redes sociales si te ha servido mucho contenido sobre aplicacion android con python es de las mejores versiones para tu móvil Android un sistema que es popular en los Smartphones y cada vez es mas popular

En este vídeo planteo una ejercicio a realizar (aquellos que tengan ganas), donde se aplica todo lo manido en el curso hasta ahora. Se prostitución de una aplicación gráfica de tipo CRUD.
Para más cursos, ejercicios y manuales recepción: www.pildorasinformaticas.es
Hola gracias por saludar nuestro sitio aquí encontraras programas juegos y muchas cosas mas
Esta atento a todas las cosas que te puedan suceder con los horoscopos diarios que te brinda esta web lo mejor para enterarse como estara el dia y que te deparan los astros
Este 2019 viene con todo y nuevas peliculas se estrenaran
Serries anime y estrenos como Bird Box se encuentran aquí
La nuevas pelicula de Dragon Ball Super estara apto para que la veas
Las nuevas peliculas estreno del 2019 tambien las encontraras aqui
Puedes descargar ese solaz que tanto buscabas utiliza el buscador y encuentra los nuevos estrenos en este 2019
Tutoriales y muchas cosas mas podras encontrar aquí en este sitio
Dale me gusta a nuestra pagina de facebook y siguenos para que te notifiquemos de algun nuevo grupo que este saliendo
Programas con su respectivo crack podras encontrar en el mejor servidor adecuado para su descarga sigue las instrucciones al pie de la giro y podras usarlo sin restricciones te deseo un buen año y espero que la informacion que este aquí te sirva hasta luego

About the author

admin

38 Comments

Click here to post a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  • Pude terminar el proyecto sin ver algun video de la practica guiada, con 220 lineas de codigo, el proyecto con las lineas que he llegado hacer.
    me siento muy feliz, en vez de sqlite utilice mysql, porque ya tenia ciertos conpcimientos, y se me hacia mas facil encontrar infor.

  • MUY buena explicación me gustaria saber como hacer una pantalla donde puedo traer todo lo que tengo en la base de datos tipo programa de ventas..¿ gracias por estos cursos :3

  • Pues tras poco más de una semana la he conseguido hacer sin ver ningún vídeo de como lo has hecho tú. Seguro que los códigos son muy diferentes y el tuyo está mejor optimizado etc… Os recomiendo a todos que la hagáis por vuestra cuenta. Vais a mejorar mucho a la hora de entender como programar y como funciona un programa realmente si la hacéis sin ayuda. También vais a aprender a buscar en google y ser más eficientes. Ahora es cuando toca ver los vídeos de como la has hecho y compararla con la mía. La verdad que es una satisfacción enorme cuando haces tu primera aplicación y ves que funciona. 100% recomiendo que la hagáis.

  • mi practica:

    from tkinter import *

    from tkinter import messagebox

    import sqlite3

    raiz=Tk()

    miframe=Frame(raiz)

    miframe.pack()

    strNombre=StringVar()

    strApellido=StringVar()

    strcontra=StringVar()

    strdireccion=StringVar()

    stride=StringVar()

    #-——————funciones————————–

    def conexion():

    conexion=sqlite3.connect("Formulario")

    cursor=conexion.cursor()

    try:

    cursor.execute('''

    CREATE TABLE FORMULARIO (ID INTEGER PRIMARY KEY AUTOINCREMENT,

    NOMBRE_USUARIO VARCHAR(50),

    APELLIDO_USUARIO VARCHAR(50),

    PASSWORD VARCHAR(50),

    DIRECCION VARCHAR(50))

    ''')

    messagebox.showinfo("Informacion", "Conectado con exito!")

    conexion.close()

    except sqlite3.OperationalError:

    messagebox.showinfo("Error", "Conexion existente")

    conexion.close()

    def crear():

    try:

    conexion=sqlite3.connect("Formulario")

    cursor=conexion.cursor()

    Gnombre=strNombre.get()

    Gapellido=strApellido.get()

    Gcontra=strcontra.get()

    Gdireccion=strdireccion.get()

    lista_G=[(Gnombre,Gapellido,Gcontra,Gdireccion)]

    cursor.executemany("INSERT INTO FORMULARIO VALUES(NULL,?,?,?,?)",lista_G)

    messagebox.showinfo("Bien", "Usuario creado con exito")

    conexion.commit()

    conexion.close()

    except sqlite3.OperationalError:

    messagebox.showinfo("Error", "Primero Crea una conexion")

    conexion.commit()

    conexion.close()

    def actualizar():

    conexion=sqlite3.connect("Formulario")

    cursor=conexion.cursor()

    Unombre=strNombre.get()

    Uapelido=strApellido.get()

    Ucontra=strcontra.get()

    Udireccion=strdireccion.get()

    ID=stride.get()

    cursor.execute("UPDATE FORMULARIO SET NOMBRE_USUARIO='"+str(Unombre)+"' WHERE ID='"+str(ID)+"'")

    cursor.execute("UPDATE FORMULARIO SET APELLIDO_USUARIO='"+str(Uapelido)+"' WHERE ID='"+str(ID)+"'")

    cursor.execute("UPDATE FORMULARIO SET PASSWORD='"+str(Ucontra)+"' WHERE ID='"+str(ID)+"'")

    cursor.execute("UPDATE FORMULARIO SET DIRECCION='"+str(Udireccion)+"' WHERE ID='"+str(ID)+"'")

    messagebox.showinfo("Actualizado", "Usuario Actualizado con exito")

    conexion.commit()

    conexion.close()

    def borrar():

    conexion=sqlite3.connect("Formulario")

    cursor=conexion.cursor()

    IDE=stride.get()

    cursor.execute("DELETE FROM FORMULARIO WHERE ID='"+str(IDE)+"'")

    cuadroid.delete(0,END)

    cuadroNombre.delete(0,END)

    cuadroApellido.delete(0,END)

    cuadrocontra.delete(0,END)

    cuadrodireccion.delete(0,END)

    messagebox.showinfo("Listo", "Usuario Borrado con exito")

    conexion.commit()

    conexion.close()

    def leer():

    conexion=sqlite3.connect("Formulario")

    cursor=conexion.cursor()

    Gde=stride.get()

    cursor.execute("SELECT * FROM FORMULARIO WHERE ID = '"+Gde+"' ")

    Extraccion=cursor.fetchone()

    Snombre=Extraccion[1]

    Sapellido=Extraccion[2]

    Scontra=Extraccion[3]

    Sdireccion=Extraccion[4]

    strNombre.set(Snombre)

    strApellido.set(Sapellido)

    strcontra.set(Scontra)

    strdireccion.set(Sdireccion)

    conexion.commit()

    conexion.close()

    def borrarCampos():

    cuadroid.delete(0,END)

    cuadroNombre.delete(0,END)

    cuadroApellido.delete(0,END)

    cuadrocontra.delete(0,END)

    cuadrodireccion.delete(0,END)

    def salir_programa():

    raiz.destroy()

    def licencia():

    messagebox.showinfo("Licencia", "Copyright by Fidel Geronimo")

    def acerca_de():

    messagebox.showinfo("Version", "Version 1.0")

    #================Labels========================================

    labelid=Label(miframe)

    labelid.grid(row=1, column=1, pady=10, padx=10)

    labelid.config(text="ID")

    labelnombre=Label(miframe)

    labelnombre.grid(row=3, column=1, pady=10, padx=10)

    labelnombre.config(text="Nombre")

    labelapellido=Label(miframe)

    labelapellido.grid(row=4, column=1, padx=10 , pady=10)

    labelapellido.config(text="Apellido")

    labelcorreo=Label(miframe)

    labelcorreo.grid(row=5, column=1, pady=10, padx=10)

    labelcorreo.config(text="Contrasena")

    labelEdad=Label(miframe)

    labelEdad.grid(row=6, column=1, padx=10, pady=10)

    labelEdad.config(text="Direccion")

    labelTexto=Label(miframe)

    labelTexto.grid(row=7, column=1, pady=10, padx=10)

    labelTexto.config(text="Comentarios")

    #-———-Boptones—————

    BotonCrear=Button(miframe)

    BotonCrear.config(text="Crear",command=crear)

    BotonCrear.grid(row=8,column=1)

    BotonLeer=Button(miframe)

    BotonLeer.config(text="Leer",command=leer)

    BotonLeer.grid(row=8,column=2)

    BotonActualizar=Button(miframe)

    BotonActualizar.config(text="Actualizar", command=actualizar)

    BotonActualizar.grid(row=9,column=1)

    Botonborrar=Button(miframe)

    Botonborrar.config(text="borrar", command=borrar)

    Botonborrar.grid(row=9,column=2)

    #-———–cuadro comentario———–

    cuadroTexto=Text(miframe)

    cuadroTexto.grid(row=7, column=2, pady=10, padx=10)

    cuadroTexto.config(width=15, height=5)

    #-———cuadritos de texto———–

    cuadroid=Entry(miframe, textvariable=stride)

    cuadroid.grid(row=1,column=2)

    cuadroNombre=Entry(miframe, textvariable=strNombre)

    cuadroNombre.grid(row=3,column=2)

    cuadroApellido=Entry(miframe, textvariable= strApellido)

    cuadroApellido.grid(row=4,column=2)

    cuadrocontra=Entry(miframe, textvariable=strcontra)

    cuadrocontra.grid(row=5,column=2)

    cuadrocontra.config(show="*")

    cuadrodireccion=Entry(miframe, textvariable=strdireccion)

    cuadrodireccion.grid(row=6,column=2)

    #-————Barras superiores———

    barramenu=Menu(raiz)

    raiz.config(menu=barramenu)

    BBDDmenu=Menu(barramenu,tearoff=0)

    #-——sub menus—————–

    BBDDmenu.add_command(label="Conectar",command=conexion)

    BBDDmenu.add_command(label="Salir", command=salir_programa)

    BorrarMenu=Menu(barramenu,tearoff=0)

    #-——sub menus——————–

    BorrarMenu.add_command(label="Borra campos", command=borrarCampos)

    crudMenu=Menu(barramenu,tearoff=0)

    #-———sub menus—————————–

    crudMenu.add_command(label="Crear",command=crear)

    crudMenu.add_command(label="leer",command=leer)

    crudMenu.add_command(label="Actualizar",command=actualizar)

    crudMenu.add_command(label="Borrar",command=borrar)

    #-——sub menus———————-

    archivoAyuda=Menu(barramenu,tearoff=0)

    archivoAyuda.add_command(label="Licencia",command=licencia)

    archivoAyuda.add_command(label="Acerca de…",command=acerca_de)

    #————————————–

    barramenu.add_cascade(label="BBDD", menu=BBDDmenu)

    barramenu.add_cascade(label="Borrar", menu=BorrarMenu)

    barramenu.add_cascade(label="CRUD", menu=crudMenu)

    barramenu.add_cascade(label="Ayuda", menu=archivoAyuda)

    raiz.mainloop()

  • Buenas comunidad, una consulta. Para que este programa tenga una funcionalidad decente, necesito tener el curso de SQL hecho? porque me meti al curso sin haber hecho antes el de SQL. Saludos!

  • Listo, apliqué muchas cosas vistas en el transcurso del curso. Separé 3 modulos en la cual el primer modulo me ayudaba con las tareas respecto a la base de datos, en la cual contenia diferentes funciones como la de crear la base de datos y la tabla, las clasicas del CRUD y como extra otras que me ayudaban a encriptar la contraseña y obtener todos los registros de la base de datos, cada una de estas funciones contiene un try-except, el segundo modulo estaba relacionado al menu superior, este modulo solo tenia 2 funciones, uno que creaba todo el menu pidiendo por parametro la raiz y las diferentes funciones a trabajar, la otra funcion soltaba la ventana que interrogaba si querian salir de la aplicacion, en el tercer modulo esta todo relacion con los Label,Entry,Text,Button, con las diferentes funciones que me permitian crear objetos de estos widgets, y bueno mi programa principal(CRUD.py) que importaba cada funcion de cada modulo para funcionar. Si bien hay algo que me falta resolver, es el poder mostrar el password descifrado, ya que en mi caso lo estoy encriptando con el algoritmo md5. Todo esto lo logré gracias a sus clases, muchas gracias.

  • Hola profe! Acabé el programa, solo que no puse la sección de comentarios ya que quise que funcionara más como un directorio normal. Sin embargo, más adelante planeo seguir trabajando en la aplicación cuanto más vaya aprendiendo, ya que estoy tomando varios cursos además de este. Por ahora veré en los siguientes videos cómo realizó el programa usted. Saludos! Dejo mi código por si a alguien le sirve.
    from tkinter import *

    import sqlite3

    from tkinter import messagebox

    raiz=Tk()

    raiz.title("Ventana de pruebas")

    raiz.resizable(0,0)

    raiz.config(bg="white")

    miframe=Frame(raiz, width="450", height="550")

    miframe.pack()

    milabel=Label(miframe, text="Datos", fg="red")

    milabel.grid(row=0, column=2, padx=20, pady=10)

    #-——–Vriables———-

    primeravez=False

    minombre=StringVar(miframe)

    miID=StringVar(miframe)

    miApellido=StringVar(miframe)

    miContrasena=StringVar(miframe)

    miTelefono=StringVar(miframe)

    miComentario=StringVar(miframe)

    #-————Barramenu———————

    barramenu=Menu(raiz)

    raiz.config(menu=barramenu)

    archivomenu=Menu(barramenu, tearoff=0)

    borramenu=Menu(barramenu, tearoff=0)

    CRUDmenu=Menu(barramenu, tearoff=0)

    ayudamenu=Menu(barramenu, tearoff=0)

    barramenu.add_cascade(label="Archivo", menu=archivomenu)

    archivomenu.add_command(label="Crear", command=lambda:crear())

    archivomenu.add_command(label="Salir", command=lambda:preguntasalir())

    barramenu.add_cascade(label="Borrar", menu=borramenu)

    borramenu.add_command(label="Limpiar campos", command=lambda:borrar())

    barramenu.add_cascade(label="Acciones", menu=CRUDmenu)

    CRUDmenu.add_command(label="Crear", command=lambda:crear())

    CRUDmenu.add_command(label="Leer", command=lambda:leer())

    CRUDmenu.add_command(label="Actualizar", command=lambda:actualizarmostrar())

    CRUDmenu.add_command(label="Eliminar", command=lambda:borrarcontecto())

    barramenu.add_cascade(label="Ayuda", menu=ayudamenu)

    ayudamenu.add_command(label="FAQ")

    ayudamenu.add_command(label="Acerca de")

    #-————Cuadros———————

    cuadroid=Entry(miframe, textvariable=miID)

    cuadroid.grid(row=2, column=2, padx=20, pady=10)

    cuadronombre=Entry(miframe, textvariable=minombre)

    cuadronombre.grid(row=3, column=2, padx=20, pady=10)

    cuadroapellido=Entry(miframe, textvariable=miApellido)

    cuadroapellido.grid(row=4, column=2, padx=20, pady=10)

    cuadrocontraseña=Entry(miframe, textvariable=miContrasena)

    cuadrocontraseña.grid(row=5, column=2, padx=20, pady=10)

    cuadrocontraseña.config(fg="red", justify="center", show="*")

    cuadrotelefono=Entry(miframe, textvariable=miTelefono)

    cuadrotelefono.grid(row=6, column=2, padx=20, pady=10)

    #-————Label———————

    idlabel=Label(miframe, text="ID")

    idlabel.grid(row=2, column=1, sticky="w", padx=20, pady=10)

    nombrelabel=Label(miframe, text="Nombre:")

    nombrelabel.grid(row=3, column=1, sticky="w", padx=20, pady=10)

    nombreApellido=Label(miframe, text="Apellido:")

    nombreApellido.grid(row=4, column=1, sticky="w", padx=20, pady=10)

    nombreContraseña=Label(miframe, text="Contraseña:")

    nombreContraseña.grid(row=5, column=1, sticky="w", padx=20, pady=10)

    nombreTelefono=Label(miframe, text="Telefono:")

    nombreTelefono.grid(row=6, column=1, sticky="w", padx=20, pady=10)

    #-————Comentarios———————

    # Textocomentarios=Text(miframe, width=15, height=10)

    # Textocomentarios.grid(row=7, column=2, padx=20, pady=10)

    # nombrecomentarios=Label(miframe, text="Comentarios:")

    # nombrecomentarios.grid(row=7, column=1, sticky="w", padx=20, pady=10)

    # scrollv=Scrollbar(miframe, command=Textocomentarios.yview)

    # scrollv.grid(row=7, column=3, sticky="nsew", padx=20, pady=10)

    # Textocomentarios.config(yscrollcommand=scrollv.set)

    #-————Funciones de read – borrar———————

    def borrar():

    miID.set("")

    minombre.set("")

    miApellido.set("")

    miContrasena.set("")

    miTelefono.set("")

    miComentario.set("")

    def borrarcontecto():

    IDlec=miID.get()

    miconexion=sqlite3.connect("DB_Contactos")

    micursor=miconexion.cursor()

    micursor.execute("DELETE FROM CONTACTOS WHERE IDENTIFICACION=?", (IDlec,))

    miconexion.commit()

    miconexion.close()

    def leer():

    IDlec=miID.get()

    miconexion=sqlite3.connect("DB_Contactos")

    micursor=miconexion.cursor()

    micursor.execute("SELECT * FROM CONTACTOS WHERE IDENTIFICACION=?", (IDlec,))

    ficherocontactos=micursor.fetchall()

    minombre.set(ficherocontactos[0][1])

    miApellido.set(ficherocontactos[0][2])

    miContrasena.set(ficherocontactos[0][3])

    miTelefono.set(ficherocontactos[0][4])

    #-————Funciones de crear y actualizar———————

    def crear():

    miconexion=sqlite3.connect("DB_Contactos")

    micursor=miconexion.cursor()

    guardaID=miID.get()

    guardanombre=minombre.get()

    guardaapellido=miApellido.get()

    guardacontrasena=miContrasena.get()

    guardatelefono=miTelefono.get()

    micursor.execute("CREATE TABLE IF NOT EXISTS CONTACTOS (IDENTIFICACION INTEGER PRIMARY KEY AUTOINCREMENT, NOMBRE VARCHAR(50), APELLIDO VARCHAR(50), CONTRASEÑA VARCHAR(20), TELEFONO VACHAR(20))")

    if guardanombre !="" and guardaapellido !="" and guardacontrasena !="" and guardatelefono !="":

    micursor.execute("INSERT INTO CONTACTOS (NOMBRE, APELLIDO, CONTRASEÑA, TELEFONO) VALUES(?,?,?,?)", (guardanombre, guardaapellido, guardacontrasena, guardatelefono))

    miconexion.commit()

    miconexion.close()

    print("Has guardado como contacto nuevo a: ", guardanombre, guardaapellido)

    avisocrear()

    else:

    print("Te ha faltado llenar algún campo")

    avisofaltandatos()

    pass

    def actualizarmostrar():

    miconexion=sqlite3.connect("DB_Contactos")

    micursor=miconexion.cursor()

    IDlec=miID.get()

    actualizanombre=minombre.get()

    actualizaApellido = miApellido.get()

    actualizaContrasena=miContrasena.get()

    actualizaTelefono=miTelefono.get()

    micursor.execute("UPDATE CONTACTOS SET NOMBRE=? WHERE IDENTIFICACION=?", (actualizanombre, IDlec))

    micursor.execute("UPDATE CONTACTOS SET APELLIDO=? WHERE IDENTIFICACION=?", (actualizaApellido, IDlec))

    micursor.execute("UPDATE CONTACTOS SET CONTRASEÑA=? WHERE IDENTIFICACION=?", (actualizaContrasena, IDlec))

    micursor.execute("UPDATE CONTACTOS SET TELEFONO=? WHERE IDENTIFICACION=?", (actualizaTelefono, IDlec))

    miconexion.commit()

    miconexion.close()

    #-————Funciones del submenu———————

    def avisocrear():

    messagebox.showinfo("Informe de base de datos", "Se ha creado exitosamente")

    def avisofaltandatos():

    messagebox.showwarning("Error", "No has llenado todos los campos")

    def preguntasalir():

    valor=messagebox.askquestion("Estas saliendo", "¿Deseas salir del programa?")

    if valor=="yes":

    raiz.destroy()

    #-————Botones———————

    botoncrear=Button(miframe, text="Crear", command=crear)

    botoncrear.grid(row=8, column=0, padx=5, pady=10)

    botonleer=Button(miframe, text="Leer", command=leer)

    botonleer.grid(row=8, column=1, padx=5, pady=10)

    botonactualizar=Button(miframe, text="Actualizar", command=actualizarmostrar)

    botonactualizar.grid(row=8, column=2, padx=5, pady=10)

    botonborrar=Button(miframe, text="Borrar", command=borrarcontecto)

    botonborrar.grid(row=8, column=3, padx=5, pady=10)

    #———————————————-

    raiz.mainloop()

  • Acabo de terminar el programa, tardé un mes en hacerlo, tuve que repasar el código del curso unas 4 veces ya que habían muchas cosas que no sabía bien para que servían, el programa tiene casi 400 lineas de código, la función que más me costó hacer fue readBoton por querer capturar todas las excepciones/errores, el código está separado en dos módulos (archivo py), he de decir que este es mi primer lenguaje de programación, tampoco había cogido curso de base de datos, sé que se puede mejorar, si puedes mejorarlo o si tienes alguna opinión comenta abajo.

    Nombre del archivo: InterfazBaseDeDatos(.)py Se tiene que ejecutar desde el segundo archivo que dejaré en el siguiente comentario. A continuación el código del primer módulo.

    ATENCIÓN: TUVE QUE CORTAR EL CÓDIGO EN 2, YOUTUBE NO ACEPTA COMENTARIOS TAN LARGOS, ASÍ QUE EL SEGUNDO COMENTARIO ES DEL MISMO MÓDULO.

    from BaseDeDatos import *

    from tkinter import *

    from tkinter import messagebox

    import sqlite3

    raiz=Tk()

    raiz.title("Base de datos")

    raiz.geometry("270×355")

    miFrame=Frame()

    miFrame.pack()

    miFrame2=Frame()

    miFrame2.pack()

    raiz.resizable(0,0)

    # ———————— RECUADRO DE ESCRITURA —————————-

    manipulaPantalla1=StringVar()

    manipulaPantalla2=StringVar()

    manipulaPantalla3=StringVar()

    manipulaPantalla4=StringVar()

    manipulaPantalla5=StringVar()

    ID=Entry(miFrame, textvariable=manipulaPantalla1)

    ID.grid(row=0, column=1, padx=0, pady=10)

    ID.config(fg="red", justify="center")

    nombre=Entry(miFrame, textvariable=manipulaPantalla2)

    nombre.grid(row=1, column=1, padx=0, pady=12)

    Pass=Entry(miFrame, textvariable=manipulaPantalla3)

    Pass.grid(row=2, column=1, padx=0, pady=9)

    Pass.config(show="●")

    apellido=Entry(miFrame, textvariable=manipulaPantalla4)

    apellido.grid(row=3, column=1, padx=0, pady=13)

    direccion=Entry(miFrame, textvariable=manipulaPantalla5)

    direccion.grid(row=4, column=1, padx=0, pady=10)

    textoComentario=Text(miFrame, width=16, height=5)

    textoComentario.grid(row=5, column=1, padx=0, pady=11)

    scrollVert=Scrollbar(miFrame, command=textoComentario.yview)

    scrollVert.grid(row=5, column=2, sticky="nsew")

    textoComentario.config(yscrollcommand=scrollVert.set)

    # ————————– NOMBRE DE RECUADRO ——————————-

    idLabel=Label(miFrame, text="ID:")

    idLabel.grid(row=0, column=0, padx=15, pady=5,)

    nombreLabel=Label(miFrame, text="Nombre: ")

    nombreLabel.grid(row=1, column=0, padx=15, pady=5)

    passLabel=Label(miFrame, text="Password: ")

    passLabel.grid(row=2, column=0, padx=15, pady=5)

    apellidoLabel=Label(miFrame, text="Apellido: ")

    apellidoLabel.grid(row=3, column=0, padx=15, pady=5)

    direccionLabel=Label(miFrame, text="Dirección: ")

    direccionLabel.grid(row=4, column=0, padx=15, pady=5)

    comentarioLabel=Label(miFrame, text="Comentarios: ")

    comentarioLabel.grid(row=5, column=0, padx=15, pady=5)

    # ————————— INTERFAZ INTERACCIÓN —————————-

    def ingresarInfo(): # Funciona bien

    siempreIntentarCrear() # Intenta crear el archivo de base de datos por si el archivo ha sido borrado mientras el programa estaba abierto y evitar un error

    variosProductos=[(manipulaPantalla2.get(), manipulaPantalla3.get(), manipulaPantalla4.get(), manipulaPantalla5.get(), "Todavía no sé manipular caja comentario")]

    miConexion=sqlite3.connect("DATOS_USUARIO.db")

    miCursor=miConexion.cursor()

    if manipulaPantalla2.get()==("") or manipulaPantalla3.get()==("") or manipulaPantalla4.get()==("") or manipulaPantalla5.get()==(""):

    messagebox.showinfo("Campo Vacío", "Uno o más campos están vacíos")

    return

    miCursor.executemany("INSERT INTO NOMBREUSUARIOS VALUES (NULL,?,?,?,?,?)", variosProductos)

    miConexion.commit()

    miConexion.close()

    messagebox.showinfo("Información", "Datos introducidos correctamente")

    eliminarInfoPantalla()

    crearEnvio=Button(miFrame2, text="Create", command=ingresarInfo)

    crearEnvio.grid(row=0, column=0, padx=9, pady=10)

    def readBoton(): # ¡Funciona Perfecto!, la función que se me hizo más difícil y compleja, ya que quise capturar todos los errores / excepciones

    ExtraidoID=(manipulaPantalla1.get())

    if ExtraidoID.isdigit():

    soloComparativaExtraidoID=int(ExtraidoID)

    try:

    negativoExtraidoID=float(manipulaPantalla1.get())

    if negativoExtraidoID <1:

    messagebox.showinfo("ID Negativo", "El ID no puede ser cero o negativo")

    return

    except Exception:

    pass

    # miConexion=sqlite3.connect("DATOS_USUARIO.db")

    # miCursor=miConexion.cursor()

    # miCursor.execute ("SELECT count(ID) FROM NOMBREUSUARIOS") # Con count se va todo a la mi*rda, ya que si borras un registro y consultas

    # el último registro te dirá que no existe, ya hay mucho código, así que se queda así, por ahora… No encontré un

    # sustituto de count para que me devolviese el valor de cada ID… LO SOLUCIONÉ DESPUÉS DE MUUUCHO!! CÓDIGO COMENTADO 😀

    # for recorre in miCursor:

    # convertirRecorre=list(recorre)

    # cursorIdTotal=convertirRecorre[0]

    try:

    if ExtraidoID.isalpha():

    print("El ID solo admite números, no letras")

    messagebox.showinfo("Error", "Letras no admitidas, ID solo admite números")

    # elif cursorIdTotal < soloComparativaExtraidoID: # Intenté agregar también un "or" para saber si el número intruducido era cero o negativo <1:,

    # lo intenté de muchas formas, creando otro elif, un try etc, estuve varios días intentándolo, al final me rendí ya que todo se iba a la mi*rda

    # YA NO NECESARIO, CÓDIGO PERTENECIENTE AL COMENTADO EN LINEA COMENTADA 118

    # print("Consola: No se encuentra en la Base de Datos")

    # messagebox.showinfo("ID no disponible", "ID no se encuentra en la Base de Datos")

    elif ExtraidoID.isdigit():

    miConexion=sqlite3.connect("DATOS_USUARIO.db")

    miCursor=miConexion.cursor()

    miCursor.execute("SELECT * FROM NOMBREUSUARIOS WHERE ID=" + ExtraidoID)

    # Descubrí que "+" le suma o concatena, pero si pongo la "," no funciona Mmmm… estaba poniendo un "?" pero solo aceptaba un dígito

    manipulame=miCursor.fetchall()

  • HOLA, tengo una duda, ya tengo una raíz construida con menús, como hago para poder enlazar esa raíz con otra raíz que sea para la bbdd o sea, para agregar clientes, me explico tengo un menú donde dice Clientes, quisiera que al darle click me salga una raíz donde este los campos para agregar los clientes.

  • Recomiendo que lo hagais antes de continuar. Es asequible y se aprende mucho dandole vueltas al código. Sobre todo se aprende en la forma de como abordar la creación del programa y las opciones que puedes usar. Yo lo he terminado y está operativo. Por supuesto he obviado el campo "Comentarios", porque no se como manipularlo todavía. Ahora empezaré a ver los pasos que sigue el profe… porque hay un tema k aunque lo he solucionado lo veo poco elegante. En concreto es fetchall y la lista que devuelve. Creo que es una lista con tuplas dentro y por eso hay que usar 2 indices para acceder a un campo. Continuamos!!!!

  • Buenisimos videos, agradezco primeramente sobre esto.
    Segundo tengo una pregunta
    Si hago un sistema CRUD como este con una bbdd SQLite, y necesito pasarlo a un .exe
    cuando quiera abrir ese .exe en otro computador ese equipo tendra que tener instalado SQLite?
    de ser así, hay alguna manera de evitar eso.
    Esto pensando que estoy haciendo un proyecto y tiene que ser entregado en un ejecutable, pero estoy pensando usar una bbdd SqLite, el problema es que solo podemos entregar el ejecutable, como puedo hacer para que el programa funcione en el computador del profesor?

    De Antemano muchas gracias!

  • Hola. En primer lugar quiero darte las gracias por tu tiempo, por dedicarlo a que negados como yo, al fin aprendamos a programar y, sobre todo, por hacerlo sencillo. Realmente este si es un curso Paso a Paso y desde Cero.
    Dicho esto, ¿puedo preguntar una duda por aquí respecto de la práctica guiada?

    Muchas gracias y un saludo!!

  • Buenas tardes, desde de México, quisiera preguntarle cual seria el proceso que usted recomienda para hacer ejecutable una aplicacion en Python ya que he visto varios en internet, sin embargo algunos tardan demasiado o tienen errores al momento de hacer aplicaciones ejecutables en Python

  • Hola buenos videos, tengo una duda cómo se podría crear diferentes vistas (tipo actividades en Android studio).
    Sí quiero crear un menú principal en el que aparezcan cuatro botones con las opciones: leer, insertar, actualizar, eliminar. Y de allí mostrarle los datos que necesita escribir dependiendo de la opción para hacer la consulta.
    La duda es como entrelazaria diferentes vistas en Python?

  • Primero muchas gracias por estar ayudando y apoyándonos a aprender, le estoy muy agradecido y espero seguir viendo muchos vídeos suyos.
    Me pregunto si seria posible después de este curso, un curso de Django, que no se si es el único pero es del que más he oido hablar de pagina web con python.

    Una vez más muchas gracias porque considero sus forma de explicar fantástica.

  • Una disculpa por comentar en un video que no es del curso de java, pero ya que es el video mas reciente del canal voy a poner mi duda aqui y es la siguiente ¿Crees que me pueda saltar la seccion de crear GUI del curso ? Desafortunadamente no dispongo de una PC por lo tanto sigo el curso desde el movil pero el IDE del movil no soporta esas clases ya que no me deja importarlas 🙁