2010-10-01 96 views
9

Tengo un script que usa Tkinter para mostrar una ventana con un mensaje. ¿Cómo me aseguro de que toma el foco para que el usuario no lo pierda y explícitamente tiene que cerrar la ventana. el código es:Hacer que el widget Tkinter tome el foco

root = Tk() 
to_read = "Stuff" 
w = Label(root, text=to_read) 
w.pack() 
root.mainloop() 

Respuesta

14

Puede utilizar focus_force método. Véase el siguiente:

Pero tenga en cuenta la documentación:

w.focus_force()

forzar al foco de entrada en el widget. Esto es descortés. Es mejor esperar a que el administrador de ventanas lo enfoque. Ver también .grab_set_global() a continuación.

Actualización: Debería funcionar en root. Por ejemplo, intente ejecutar el siguiente código. Creará una ventana y puede cambiar el foco. Después de 5 segundos, intentará captar el foco.

from Tkinter import * 

root = Tk() 
root.after(5000, lambda: root.focus_force()) 
root.mainloop() 
+0

el comando está bien, pero ¿dónde va a parar en mi código? Parece que mi formato será root.focus_force, pero da un error de atributo. – Ali

+1

@Ali: actualicé la pregunta para responder a su comentario. – ars

+0

parece estar funcionando ahora. Sin embargo, dejé la función .after. Gracias. – Ali

1

lo que funcionó para mí fue:

root.wm_attributes("-topmost", 1) 
root.focus_force() 

me encontré con esto y alguna otra manera de hacerlo en Win32 here

Cuestiones relacionadas