Autor
|
Tema: Capturar un evento antes que ocurra, tkinter.- (Leído 5,530 veces)
|
El mas antiguo
Desconectado
Mensajes: 103
|
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. #------------------------------------------------------------------------------- # 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
Mensajes: 1.853
🔵🔵🔵🔵🔵🔵🔵
|
Hola, abajo de esta linea: except:
Inserta esta instrucción y prueba de nuevo: continue
Si no funciona prueba esta otra instrucción: pass
Nos comentas. Saludos
|
|
« Última modificación: 13 Agosto 2022, 17:31 pm por Danielㅤ »
|
En línea
|
|
|
|
|
Danielㅤ
Desconectado
Mensajes: 1.853
🔵🔵🔵🔵🔵🔵🔵
|
A ver prueba a cambiar el except por: finally: pass
Saludos
|
|
|
En línea
|
|
|
|
El mas antiguo
Desconectado
Mensajes: 103
|
Ahora me ocurre lo mismo que antes de utilizar el try-except.- 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
Mensajes: 81
|
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
Mensajes: 103
|
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
Mensajes: 81
|
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
Mensajes: 1.853
🔵🔵🔵🔵🔵🔵🔵
|
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
Mensajes: 103
|
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.- import tkinter as tk def undo(event): print("Deshacer cancelado.") return "break" 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) text.bind("<<Undo>>", undo) text.focus() root.mainloop() if __name__ == '__main__': main()
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Capturar un Evento de Impresion ...
Programación Visual Basic
|
BadBoyVenezuelan
|
2
|
2,183
|
31 Agosto 2005, 04:48 am
por Slasher-K
|
|
|
Capturar texto seleccionado y copiado, con un evento
Java
|
noobdai
|
3
|
6,031
|
16 Marzo 2010, 22:42 pm
por Debci
|
|
|
AYUDA: Como capturar un Evento de un Programa
Ingeniería Inversa
|
x64core
|
8
|
4,813
|
27 Marzo 2012, 21:49 pm
por .:UND3R:.
|
|
|
[Duda | Solucionado] Capturar evento global y simular click
.NET (C#, VB.NET, ASP)
|
Shout
|
3
|
4,079
|
13 Julio 2013, 05:22 am
por Shout
|
|
|
[Python-Tkinter]Es posible saber quien produjo un evento
Python
|
Proxmond
|
1
|
1,990
|
25 Julio 2014, 05:42 am
por Godor
|
|