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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / Capturar un evento antes que ocurra, tkinter.- en: 13 Agosto 2022, 15:33 pm
Hola gente, ¿cómo están?.
Créanme que como siempre antes de pedir ayuda busco práctico
y como en este caso cuando tengo que tirar la toalla recurro a Uds.
La consulta concreta es ¿hay alguna manera de capturar el evento
antes que se efectivice?, o ¿tiene esto otra solución?.-
En apariencia funciona, lo que ocurre es que cuando se ejecuta
la excepción el IDE se queda como en un bucle infinito y no se deja
cerrar.
Bueno, es todo, desde ya gracias, muchas gracias por el tiempo.

Código:
#-------------------------------------------------------------------------------
# Name:        módulo1
# Purpose:     Copiar/pegar
#
# Author:      Daniel
#
# Created:     11/08/2022
# Copyright:   (c) Daniel 2022
# Licence:     <your licence>
#-------------------------------------------------------------------------------
import tkinter as tk
from tkinter import ttk
from functools import partial
import funciones

def rehacer(text, temp, event):
    try:
        text.edit_undo()
    except:
        text.insert(tk.INSERT, temp)

    return


def main():

    root = tk.Tk()

    text = tk.Text(root,width = 55,height = 10, undo=True)
    text.pack()

    temp = """ La inteligencia no se mide por el número
 de palabras que sabes pronunciar,
 sino por aquellas que no dices para no lastimar!!!
 """

    text.insert(tk.INSERT, temp)

    root.bind('<Control-z>', partial(rehacer, text, temp))
   
    root.mainloop()


if __name__ == '__main__':
    main()

Slds. Daniel ☕☕☕
2  Programación / Scripting / Mostrar los datos de un treeview en otra ventana... en: 12 Marzo 2022, 00:13 am
Hola gente ¿Cómo están?, les cuento lo que me ocurre, tengo una ventana principal donde
cuentos con los movimientos de una caja de ahorro en 3 entry(fecha, detalle y monto y código que no lo muestro) con el botón <Buscar> muestro un treeview con todos los movimientos y
con un botón(en la  ventana del treeview) <Mostrar> quiero que al seleccionar me muestre el ítem en la ventana principal, ¿Cómo hago para lograrlo?.-

https://postimg.cc/7GnqdwxB
https://postimg.cc/dZRZ5zXv


Código
  1. botonBuscar = ttk.Button(lfSeisbotones, text="Buscar",
  2.        command=partial(Busqueda.browseBD, parametros))
  3.    botonBuscar.place(x=271, y=6, width=80, height=40)
  4.  

Código
  1. def seleccionar(mv):
  2.    try:
  3.        item = mv.selection()[0]
  4.    except IndexError:
  5.        messagebox.showwarning(message="Debe seleccionar un elemento.",
  6.            title="No hay selección")
  7.    else:
  8.        text = mv.item(item, option="text")
  9.        messagebox.showinfo(message=text, title="Selección")

Código
  1. botonMostrar = ttk.Button(ventanaBus, text="Mostrar",
  2.        command=partial(seleccionar, mv))
  3.    botonMostrar.place(x=530, y=273, width=80, height=40)


Slds. Daniel ☕☕☕
3  Programación / Scripting / Borrar todo el contenido de un treeview. en: 9 Marzo 2022, 13:53 pm
Hola gente como están.-
Espero poder explicarme, tengo una BD(un txt) y un formulario donde efectúo la búsqueda, el tema es 
que al inicio para que no quede “vacío” muestro los últimos 10 registros, hasta hay todo bien el inconveniente surge cuando efectúo una búsqueda, ¿como hago para borrar esos 10 registros y mostrar el resultado de lo encontrado?.-
Se que puedo hacer algo como esto:

------------------------------------
treeview.delete(item1)
------------------------------------
Podría poner esto en un bucle, pero ¿ como saber cuando llego el último ítems?
Bueno es todo lo que puedo exponer, espero se me entienda,

Slds. Daniel ☕☕☕
4  Programación / Scripting / Cuando <botón> toma el foco no lanza ningún evento. en: 19 Febrero 2022, 22:08 pm
Hola gente, ¿Cómo están?.
El incansable otra vez por aquí, espero que con un vistazo puedan orientarme, les cuento
Tengo en una ventana 6 botones y 3 cajas de texto, cuando me muevo por los entry con <tab> siempre me muestra la ayuda pero en los botones no pasa lo mismo, se puede solucionar de otra manera que no sea crear una función para cada botón ya que probé con bind pero tengo que pasar 3 argumentos y por lo que tengo leído bind es similar a command, espero que se entienda…
 
La llamada.

Código
  1. Ayuda.ayudaBoton(root, botonAgregar, "botAgregar")
  2. Ayuda.ayudaBoton(root, botonEditar, "botEditar")
  3. Ayuda.ayudaBoton(root, botonBorrar, "botBorrar")
  4. Ayuda.ayudaBoton(root, botonBuscar, "botBuscar")
  5. Ayuda.ayudaBoton(root, botonListado, "botListado")
  6. Ayuda.ayudaBoton(root, botonCerrar, "botCerrar")
  7.  

La función.

Código
  1. def ayudaBoton(root, button, boton):
  2.    if boton == "botAgregar":
  3.        texto = " Agrega un nuevo movimiento."
  4.    elif boton == "botEditar":
  5.        texto = " Edita el movimiento en pantalla."
  6.    elif boton == "botBorrar":
  7.        texto = " Borra el movimiento en pantalla."
  8.    elif boton == "botBuscar":
  9.        texto = " Busqueda de movimientos."
  10.    elif boton == "botListado":
  11.        texto = " Muestra el total de movimientos."
  12.    elif boton == "botCerrar":
  13.        texto = " Cierra la aplicación."
  14.  
  15.    label_ayuda = ttk.Label(root, text = "", font=("Verdana", 12))
  16.  
  17.    button.bind("<Enter>", func=lambda e: label_ayuda.config( text=texto))
  18.    button.bind("<Leave>", func=lambda e: label_ayuda.config( text=''))
  19.  
  20.    label_ayuda.place(x=10, y=280)
  21.  

Slds. Daniel ☕☕☕
5  Programación / Scripting / Poner un scrollbar en un Treeview en tkinter en: 17 Febrero 2022, 03:04 am
Hola gente ¿Cómo están?,
Alguien me podría guiar para hacer lo que dice el enunciado, probé poniendo mas productos de lo que se pueda visualizar pero la barra no aparece si en cambio con la ruedita del mouse se mueve en ambas direcciones.-

Código
  1. from tkinter import *
  2. import tkinter  as tk
  3. from tkinter import ttk
  4.  
  5. root = tk.Tk()
  6. root.title('Ejemplos de tablas')
  7. root.geometry('600x300')
  8. #root['bg']='#fb0'
  9.  
  10. tv = ttk.Treeview(root, columns=("col1", "col2"))
  11. tv.column("#0", width=200)
  12. tv.column("col1", width=80, anchor=CENTER)
  13. tv.column("col2", width=80, anchor=CENTER)
  14.  
  15.  
  16. tv.heading("#0", text="Producto", anchor=CENTER)
  17. tv.heading("col1", text="Precio", anchor=CENTER)
  18. tv.heading("col2", text="Stock", anchor=CENTER)
  19.  
  20. tv.insert("", END, text="Leche Ylolay TB x 1 litro", values=("130.50", "29"))
  21. tv.insert("", END, text="Tomate Arcor lata x 410 grs.", values=("106.00", "48"))
  22. tv.insert("", END, text="Aceite Zanoni botella x 900 cc.", values=("230.00", "11"))
  23.  
  24. tv.pack()
  25.  
  26. root.mainloop()


Slds. Daniel ☕☕☕
6  Programación / Scripting / Emular a un ToolTips con una etiqueta. en: 15 Febrero 2022, 15:57 pm
Hola gente, ¿Cómo están?, lo que no puedo lograr es hacer que esta parte se mueva a derecha e izquierda según sea el botón que se le pasa el mouse.-

Poner la etiqueta en la función y "x" quede de esta manera:

Código
  1. guia = 20
  2. label_ayuda = ttk.Label(ventana, text="", font = ('vardana', 12))
  3. label_ayuda.place(x=guia, y=200, width=380, height=40)
  4.  

El programa:

Código
  1. from tkinter import *
  2. #import tkinter as tk
  3.  
  4. def ayudaUno(button):
  5.    if button == boton_buscar:
  6.        texto = " Buscar movimientos."
  7.    elif button == boton_editar:
  8.        texto = " Editar movimiento."
  9.    elif button == boton_cerrar:
  10.        texto = " Cerrar aplicación."
  11.  
  12.    button.bind("<Enter>", func=lambda e: label_ayuda.config( text=texto))
  13.    button.bind("<Leave>", func=lambda e: label_ayuda.config( text=''))  
  14.  
  15. def centrarVentana(ventana):
  16.    ancho_ventana = 500
  17.    alto_ventana = 260
  18.  
  19.    x_ventana = ventana.winfo_screenwidth() // 2 - ancho_ventana // 2
  20.    y_ventana = ventana.winfo_screenheight() // 2 - alto_ventana // 2
  21.  
  22.    posicion = str(ancho_ventana) + "x" + str(alto_ventana) + "+" + str(x_ventana) + "+" + str(y_ventana)
  23.    ventana.geometry(posicion)
  24.  
  25.    ventana.resizable(0,0)
  26.  
  27.  
  28. ventana = Tk()
  29. ventana.title('Practica')
  30. centrarVentana(ventana)
  31.  
  32. label_ayuda = ttk.Label(ventana, text="", font = ('vardana', 12))
  33. label_ayuda.place(x=20, y=200, width=380, height=40)
  34.  
  35. boton_buscar = Button(ventana, text ="Buscar", relief=RAISED, background="light grey")
  36. boton_buscar.place(x=100, y=160, width=80, height=40)
  37.  
  38. boton_editar = Button(ventana, text ="Editar", relief=RAISED, background="light grey")
  39. boton_editar.place(x=200, y=160, width=80, height=40)
  40.  
  41. boton_cerrar = Button(ventana, text ="Cerrar", relief=RAISED, background="light grey", command = ventana.destroy )
  42. boton_cerrar.place(x=300, y=160, width=80, height=40)
  43.  
  44. ayudaUno(boton_buscar)
  45. ayudaUno(boton_editar)
  46. ayudaUno(boton_cerrar)
  47.  
  48. ventana.mainloop()
  49.  

Slds. Daniel ☕☕☕
7  Programación / Scripting / Ingresar el signo ‘-’ en un caja de texto que contiene números.- (tkinter) en: 12 Febrero 2022, 22:03 pm
Hola gente ¿Cómo están?, les quito un poquito de tiempo.-
La idea es que se pueda ingresar solo números, el signo ‘-’ y el punto ’.’ , el problema es que ingreso
-12500.23 todo bien pero x ej. si ingreso 125 y me posiciono al comienzo para el ingresar el ‘-’ no me funciona, ¿que estoy haciendo mal, que me falta?.   

Código
  1. from tkinter import ttk, messagebox
  2. import tkinter as tk    
  3.  
  4. def validar_entrada(previous_text, text, index):
  5.    if text.isdecimal():
  6.        return True
  7.    elif text == '.':
  8.        if text in previous_text:
  9.            return False
  10.        else:
  11.            return True
  12.    elif text == '-':
  13.        if len(previous_text) == 0:
  14.            return True
  15.        else:
  16.            if index == 0 and previous_text[0] != text:
  17.                return True
  18.            else:
  19.                return False
  20.    else:
  21.        return False    
  22.  
  23. root = tk.Tk()
  24. root.geometry("300x100+500+300")
  25. root.title("Unicamente decimales.")
  26.  
  27. ingreso = ttk.Entry(root, validate="key", validatecommand=(root.register(validar_entrada), "%s", "%S", "%i",))
  28. ingreso.place(x=10, y=20, width=150)
  29.  
  30. ingreso.focus()
  31.  

Slds. Daniel ☕☕☕
8  Programación / Scripting / Pasar argumentos a una función saliendo de una caja de texto con <Enter>. en: 12 Febrero 2022, 00:35 am
Hola gente ¿Cómo están?, bueno x mas que busco no logro dar con la tecla, al salir de la caja
de texto quiero validar la fecha ingresada, bueno es todo, desde ya muchas pero muchas
gracias al que desee ayudarme.-

Código
  1. from tkinter import ttk, messagebox
  2. import tkinter as tk
  3. from datetime import datetime
  4.  
  5. def verificarFecha(self):
  6.    try:
  7.        datetime.strptime(fecha, '%d/%m/%Y')
  8.        print('correcto')
  9.    except ValueError:
  10.        print("\n No ha ingresado una fecha correcta...")
  11.  
  12. root = tk.Tk()
  13. root.config(width=300, height=200)
  14. root.title("Mi aplicación.")
  15.  
  16. fecha = tk.StringVar()
  17. entrada = ttk.Entry(root, textvariable=fecha, font=("Verdana", 12))
  18. entrada.place(x=50, y=50, width=150)
  19. entrada.focus()
  20.  
  21. entrada.bind("<Return>", verificarFecha)
  22.  
  23.  
  24. boton = ttk.Button(root, text="Salir")
  25. boton.place(x=100, y=100, width=80, height=50)
  26.  
  27. root.mainloop()
9  Programación / Scripting / Identificar cual es cual con 2 botones enviados a una función. en: 3 Febrero 2022, 16:38 pm
Hola gente ¿Cómo están?, estoy comenzando con el desarrollo de aplicaciones de escritorio entre otras dudas como hacer que aparezca una ayuda cuando se pasa el mouse por un elemento o activar un botón con tan solo pulsar una tecla contenido en la nombre del mismo, paso a paso.-
En definitiva lo que no logro hacer que al pasar por uno de los botones aparezca el texto de ayuda correspondiente , así como esta aparece “Editar el movimiento en pantalla”, probé de varias formas pero nada.-

Código
  1. from tkinter import *
  2.  
  3. def textoDelLabel(button):
  4.    texto = "Agrega un nuevo movimiento"
  5.    button.bind("<Enter>", func=lambda e: Label_ayuda.config( text=texto))
  6.    button.bind("<Leave>", func=lambda e: Label_ayuda.config( text=''))  
  7.  
  8.    texto = "Editar el movimiento en pantalla"
  9.    button.bind("<Enter>", func=lambda e: Label_ayuda.config( text=texto))
  10.    button.bind("<Leave>", func=lambda e: Label_ayuda.config( text=''))  
  11.  
  12. ventana = Tk()
  13. ventana.geometry("300x200")
  14. ventana.config(bg="light gray")
  15.  
  16. botonAgregar = Button(ventana, text="Agregar")
  17. botonAgregar.place(x=55, y=50, width=80, height=40)
  18.  
  19. botonEditar = Button(ventana, text="Editar")
  20. botonEditar.place(x=155, y=50, width=80, height=40)
  21.  
  22. Label_ayuda  = Label(text="",font=("vardana"),fg="black", bg="light gray")
  23. Label_ayuda.place(x=20,y=110)
  24.  
  25. textoDelLabel(botonAgregar)
  26.  
  27.  
  28. ventana.mainloop()

Slds. Daniel
10  Programación / Scripting / Presionar tecla de forma virtual (no física) en: 24 Enero 2022, 21:00 pm
Hola gente ¿Cómo están?, les dejo este para que me digan como presionar(virtualmente) la tecla “backspace” cuando se detecta un ingreso que no sea un número.-
Encontré algunas maneras pero lo único que logro es ralentizar el programa y que  no pueda ingresar nada mas.-


Código
  1. from pynput import keyboard as kb
  2. #import keyboard
  3.  
  4. def pulsa(tecla):
  5.    tmpTecla = str(tecla)
  6.    if '<' not in tmpTecla and tmpTecla != 'Key.esc' and tmpTecla != "Key.backspace":
  7.        print('No es un numero')
  8.  
  9.  
  10. def suelta(tecla):
  11.    if tecla == kb.Key.esc:
  12.        return False
  13.  
  14. escuchador = kb.Listener(pulsa, suelta)
  15. escuchador.start()
  16.  
  17. print('\n Solo números(con [escape] finaliza...: ', end="")
  18. while escuchador.is_alive():
  19.    pass
  20.  

Edito: esto que pongo a continuación funciona perfectamente solo pero no logro aplicarlo al código anterior.-

Código
  1. import keyboard
  2.  
  3. keyboard.press("windows+d")
  4. keyboard.release("windows+d")
  5.  


Desde ya gracias y un saludo a todos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines