1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
class PopUp(Toplevel):
def __init__(self):
Toplevel.__init__(self)
self.title("Popup Tkinter")
self.resizable(height=False, width=False)
# redirige tous les évènements vers le popup
# ce qui rend la fenêtre "root" temporairement inactive
self.grab_set()
self.transient(root) # fenêtre "enfant" de la fenêtre root
self.saise = Entry(self, bg="white")
self.saise.pack(padx=5, pady=5)
self.saise.bind("<Return>", self.sortie)
Button(self, text="Valider", command=self.sortie).pack()
self.texte = None
def sortie(self, event=None):
self.texte = self.saise.get()
self.destroy()
def start():
for i in xrange(10):
print i
if i == 5:
# on stock la référence vers la fenêtre Toplevel
p = PopUp()
print "-> pause"
# on bloque le flux d'exécution tant que le Toplevel existe
# c'est à dire tant que la méthode "destroy" n'a pas été appelée,
# mais la référence p existe toujours, et on va pouvoir s'en servir
# pour récupérer la saise APRÈS destruction du Toplevel
root.wait_window(p)
if p.texte is None:
print "Pas de saise"
else:
print "Le texte saisi est :", p.texte
root = Tk()
Button(root, text="click", command=start).pack(padx=30, pady=30)
root.mainloop() |
Partager