2010-10-08 12 views
1

Je travaille sur une application graphique, et au début de la course, je voudrais poser une seule question à l'utilisateur. Le cadre graphique (Panda3D) a des boîtes de dialogue par défaut moche, donc je voudrais utiliser quelque chose comme tkInter pour fournir une boîte de dialogue modale. J'ai essayé ceci:récupérer le clavier de tkinter

import Tkinter 
import tkMessageBox 

root = Tkinter.Tk() 
# hide the root window 
root.withdraw() 

config.PLAY_MUSIC = tkMessageBox.askyesno("My App", 
     "Would you like this app to play music from your iTunes collection?") 

root.destroy() 

Ce fait ce que je veux, mais il semble acheminer tous les autres événements de clavier à tkinter plutôt que mon application Panda3D. Je n'ai pas besoin de faire quoi que ce soit d'autre avec tk après ce dialogue.

Je peux mettre la boîte de dialogue tk dans une application distincte qui s'enchaîne sur la mienne, je suppose, mais je me demande s'il existe un moyen de tuer tk et récupérer le clavier sans quitter complètement mon application.

Mise à jour: Essayé root.quit(), qui semble récupérer le clavier, mais je reçois une erreur "Fatal Python error: PyEval_RestoreThread: NULL tstate" à la sortie de mon programme, ce qui n'est pas idéal.

Répondre

1

Avez-vous essayé:

grab_release (auto)
Ce qui fait: grab de sortie pour ce widget si actuellement défini.

"Un raccourci dirige tous les événements vers cet objet et descendant dans l'application."

comme dans:

root.grab_release() 

espère que vous avez pas essayé celui-ci.

+0

Même résultat que root.quit(), mais merci quand même. –