Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Presionar tecla de forma virtual (no física)
#1
Hola gente ¿Cómo están?, mil disculpas por borrar el hilo anterior pero estaba muy malo,
les dejo este para que me digan como presionar(virtualmente) la tecla “backspace” cuando
se detecta un ingreso que no sea un numero.-

Código:
from pynput import keyboard as kb
import keyboard

def pulsa(tecla):
    tmpTecla = str(tecla)
    if '<' not in tmpTecla and tmpTecla != 'Key.esc' and tmpTecla != "Key.backspace":
        print('No es un numero')
       

def suelta(tecla):
    if tecla == kb.Key.esc:
        return False

escuchador = kb.Listener(pulsa, suelta)
escuchador.start()

print('\n Solo números(con [escape] finaliza...: ', end="")
while escuchador.is_alive():
    pass

Desde ya gracias y un saludo Francisco.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#2
Hola, Daniel.

¿Probaste con el mismo módulo pynput que estás utilizando para leer el teclado? Por lo que veo en la documentación, tiene funciones para envío de teclas:

Código:
from pynput.keyboard import Key, Controller

keyboard = Controller()

# Press and release space
keyboard.press(Key.space)
keyboard.release(Key.space)

# Type a lower case A; this will work even if no key on the
# physical keyboard is labelled 'A'
keyboard.press('a')
keyboard.release('a')

# Type two upper case As
keyboard.press('A')
keyboard.release('A')
with keyboard.pressed(Key.shift):
    keyboard.press('a')
    keyboard.release('a')

# Type 'Hello World' using the shortcut type method
keyboard.type('Hello World')

Por cierto, ¿es necesario validar los datos mientras se están escribiendo? ¿Por qué no simplemente cuando input() retorna? Si realmente necesitás que tu aplicación prohíba el ingreso de ciertos datos o teclas, mejor sería usar una aplicación de escritorio. No es algo que haya visto mucho en las aplicaciones de consola.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(24-01-2022, 10:08 PM)Francisco escribió: Por cierto, ¿es necesario validar los datos mientras se están escribiendo? ¿Por qué no simplemente
cuando input() retorna? Si realmente necesitás que tu aplicación prohíba el ingreso de ciertos datos
o teclas, mejor sería usar una aplicación de escritorio. No es algo que haya visto mucho en las
aplicaciones de consola.

Hola francisco, buen día, en un 80% estoy de acuerdo con vos, pero si todos hablamos de rapidez
esto lo logra, en cuanto a la eficiencia podríamos decir que es la misma, pero aventaja en cuanto
ni bien pulses <Enter> de la manera “tradicional” podes tener algún error y tenes que ingresar todo
de nuevo en cambio con el mío eso no ocurrirá nunca.-
En cuanto a la “aplicación de escritorio” todavía no tengo noción de programar mas allá de la consola,
hace 2 meses que comencé con Python.-
Por ultimo no quieras utilizar demasiado el criterio con mis propuestas, tengo 70 años y ya no necesito
ni quiero forjarme un futuro, por lo tanto te podrás dar una idea de que por momentos puedo proponer
cosas que no tengan que ver demasiado con lo practico, tan solo deseo profundizar en el software lo
mas posible y ayudar a los demás.-
Bueno al fin el programita, que a continuación voy a modificar para que se pueda ingresar tanto enteros
como números reales…

Código:
import keyboard

numero = ""
print('\n solo números...: ', end="")
while True:
    if keyboard.read_key() == "enter":
        break
    else:
        tecla = keyboard.read_key()
        if tecla == "backspace":
            numero = numero[:-1]
        else:
            if not tecla.isdigit():
                keyboard.send("backspace")
            else:
                numero += tecla

numeros = int(numero)
print('\n final', numeros)

Slds. Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#4
Hola, Daniel. ¡Excelente! Entiendo lo que decís y me parece perfecto que estés desarrollando código por mero placer, es lo más interesante de todo. Sin embargo, te insisto que le eches un ojo a este artículo introductorio a Tk para desarrollar aplicaciones de escritorio: https://recursospython.com/guias-y-manua...a-tkinter/. No es algo más complejo que lo que estás haciendo ahora y puede mejorar mucho la experiencia de tu aplicación.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
Hola Francisco ¿Cómo estas? buen día a todo.-
No te das una idea las ganas/ansias que tengo de que llegue el día que pueda incursionar
en programas de escritorio pero tengo temor de perderme algo y vuelvo una y otra vez
a repasar lo estudiado.-
Una consulta, ¿esa librería es recomendable?.-
Te aclaro que modifique el código anterior, tenia un error.-

Slds. Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#6
Hola, Daniel.

Yo la recomiendo. Tanto para aprender como para desarrollar aplicaciones profesionales es una buena opción. Desde luego, hay opciones más completas y complejas como Qt, para aplicaciones con más exigencias.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)