2010-10-01 17 views
9

Ho uno script che utilizza Tkinter per far apparire una finestra con un messaggio. Come faccio ad assicurarmi che sia focalizzato in modo tale che l'utente non lo perda e che debba esplicitamente chiudere la finestra. il codice è:Attiva il widget Tkinter

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

risposta

14

È possibile utilizzare il metodo focus_force. Vedere il seguente:

ma nota la documentazione:

w.focus_force()

forzare il focus di input al widget. Questo è scortese. È meglio aspettare che il gestore delle finestre ti concentri. Vedi anche .grab_set_global() di seguito.

Aggiornamento: Dovrebbe funzionare su root. Ad esempio, prova a eseguire il seguente codice. Creerà una finestra e potrai attivare lo stato attivo. Dopo 5 secondi, proverà ad afferrare il fuoco.

from Tkinter import * 

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

il comando è ok, ma dove va a finire nel mio codice? Sembra che il mio formato sia root.focus_force, ma dà un errore di attributo. – Ali

+1

@Ali: ho aggiornato la domanda per rispondere al tuo commento. – ars

+0

sembra che funzioni adesso. Comunque ho lasciato fuori la funzione .after. Grazie. – Ali

1

Che cosa ha funzionato per me era:

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

ho trovato questo e qualche altro modo per farlo in win32 here

Problemi correlati