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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Capturar un evento antes que ocurra, tkinter.-
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Capturar un evento antes que ocurra, tkinter.-  (Leído 5,404 veces)
El mas antiguo

Desconectado Desconectado

Mensajes: 103



Ver Perfil
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 ☕☕☕


En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.834


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #1 en: 13 Agosto 2022, 17:28 pm »

Hola,  abajo de esta linea:

Código
  1.    except:

Inserta esta instrucción y prueba de nuevo:

Código
  1.    continue

Si no funciona prueba esta otra instrucción:

Código
  1.    pass


Nos comentas.


Saludos


« Última modificación: 13 Agosto 2022, 17:31 pm por Danielㅤ » En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 103



Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #2 en: 13 Agosto 2022, 17:53 pm »

Hola tocayo, exactamente igual...

Código
  1. def rehacer(text, temp, event):
  2.    try:
  3.        text.edit_undo()
  4.    except:
  5.        pass
  6.  
  7.    return

https://ibb.co/gVFMn7r
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.834


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #3 en: 13 Agosto 2022, 18:15 pm »

A ver prueba a cambiar el except por:

Código
  1.    finally:
  2.    pass


Saludos
En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 103



Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #4 en: 13 Agosto 2022, 20:39 pm »

Ahora me ocurre lo mismo que antes de utilizar
el try-except.-


Citar
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Daniel Virgili\AppData\Local\Programs\Thonny\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:\Users\Daniel Virgili\Desktop\Practica\Copiar-pegar\Principal.py", line 18, in rehacer
    text.edit_undo()
  File "C:\Users\Daniel Virgili\AppData\Local\Programs\Thonny\lib\tkinter\__init__.py", line 3242, in edit_undo
    return self.edit("undo")
  File "C:\Users\Daniel Virgili\AppData\Local\Programs\Thonny\lib\tkinter\__init__.py", line 3198, in edit
    return self.tk.call(self._w, 'edit', *args)
_tkinter.TclError: nothing to undo


Slds. Daniel ☕☕☕
En línea

reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #5 en: 14 Agosto 2022, 01:23 am »

el tema es que con undo=True ya estás asociando a ctrl z y ctrl y con el Text y por lo tanto la función rehacer la línea root.bind('<Control-z>', partial(rehacer, text, temp)) están demás, sino ¿cuál es el sentido de undo=True?
En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 103



Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #6 en: 14 Agosto 2022, 02:30 am »

No entiendo si me estás ayudando o criticando, es una obviedad lo que planteas,
lo que trato de hacer con esa función(aparentemente innecesaria) es buscar alguna
alternativa para que no me quede el widget vacío.-
Aprovecho para preguntar, ¿nadie sabe como acceder a la pila del widget text?,
si la tuviera tal vez al validar que estuviera vacía podría configurar undo=False.-

Slds. Daniel ☕☕☕
En línea

reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #7 en: 14 Agosto 2022, 04:14 am »

Citar
No entiendo si me estás ayudando o criticando
eso lo podés tomar como quieras, lo que te parece una obviedad, no lo es tanto si estás intentando cambiar la forma de interactuar de tkinter. y mucho menos es una obviedad lo que estás intentando hacer.
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.834


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #8 en: 14 Agosto 2022, 14:43 pm »

Tiene razón el rey mosquito, nosotros tratamos de ayudarte, lo que vos queres no es común, porque lo común es cuando se quiere usar un evento que dispare al ejecutar tal instrucción o un control de una ventana gráfica, pero vos queres hacer un pre evento y la verdad no se mucho porque lo queres hacer así ni como exactamente, de todas maneras hay otras formas.


Saludos
En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 103



Ver Perfil
Re: Capturar un evento antes que ocurra, tkinter.-
« Respuesta #9 en: 14 Agosto 2022, 15:12 pm »

Lo que proponen Uds. es algo como esto, ¿no es así?, bien,
lo que me falta es saber como agregar un condicional para
que funcione correctamente y no me quede el widget vacío.-


Código
  1. import tkinter as tk
  2.  
  3. def undo(event):
  4.    print("Deshacer cancelado.")
  5.    return "break"
  6.  
  7.  
  8. def main():
  9.    root = tk.Tk()
  10.    text = tk.Text(root, width=55, height=10, undo=True)
  11.    text.pack()
  12.    temp = """ La inteligencia no se mide por el número
  13. de palabras que sabes pronunciar,
  14. sino por aquellas que no dices para no lastimar!!!
  15. """
  16.    text.insert(tk.INSERT, temp)
  17.    text.bind("<<Undo>>", undo)
  18.  
  19.    text.focus()
  20.    root.mainloop()
  21.  
  22.  
  23. if __name__ == '__main__':
  24.    main()
  25.  

ej:
agrego 123
           456
           789

Si pulso <Control-z> 1 vez queda:
            123
            456

Si pulso <Control-z> otra vez queda:
            123
                       
Pulso <Control-z> otra vez deja el TEXT vacío, esto es lo que
deseo evitar...

Slds. Daniel ☕☕☕
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Capturar un Evento de Impresion ...
Programación Visual Basic
BadBoyVenezuelan 2 2,175 Último mensaje 31 Agosto 2005, 04:48 am
por Slasher-K
Capturar texto seleccionado y copiado, con un evento
Java
noobdai 3 6,018 Último mensaje 16 Marzo 2010, 22:42 pm
por Debci
AYUDA: Como capturar un Evento de un Programa
Ingeniería Inversa
x64core 8 4,773 Último mensaje 27 Marzo 2012, 21:49 pm
por .:UND3R:.
[Duda | Solucionado] Capturar evento global y simular click
.NET (C#, VB.NET, ASP)
Shout 3 4,053 Último mensaje 13 Julio 2013, 05:22 am
por Shout
[Python-Tkinter]Es posible saber quien produjo un evento
Scripting
Proxmond 1 1,959 Último mensaje 25 Julio 2014, 05:42 am
por Godor
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines