Bonsoir

Dans ce programme rudimentaire qui fonctionne bien avec des clics de souris,
au premier clic s'affiche une fenêtre popup, au second se fermme cette fenêtre.

Après beaucoup d'essais je n'arrive pas à lier les boutons avec un return sur le clavier.

Merci de m'éclairer.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
50
#! /usr/bin/env python
# -*- coding:Utf-8 -*-
 
 
from tkinter import *
 
 
class interface:
 
    def __init__(self):
 
        #self.nbAleatoire = random.choice(range(1,101))
        self.parent=root
 
        self.bouton=Button(self.parent,bg="beige",text="Clic ou Enter pour afficher une fenêtre pop-up",command=self.affichage)
        self.bouton.place(relx=0.3,rely=0.5)
        self.bouton.bind("<Return>",self.affichage)
 
 
    def affichage(self):    
 
        fen1 =FenPopUp("lightblue")
        fen1.affiche("Essai de fenêtre popup")
 
 
 
class FenPopUp(Toplevel):
    "Fenêtre satellite (modale) contenant un simple canevas"
    def __init__(self,couleur="beige"):
        Toplevel.__init__(self)
        self.geometry("400x200")    # "500x400+100+240" permettrait de décaler l'affichage
        self.overrideredirect(0)            # => si paramètre 1 fenêtre sans bordure ni bandeau
        self.transient(self.master)         # => fenêtre 'modale'
        self.configure(bg=couleur)
 
        self.bouton=Button(self,text="Clic ou Enter pour fermer", command=self.destroy,bg="lightyellow")
        self.bouton.place(width=200,height=30,relx=0.3,rely=0.6)
        self.bouton.bind("<Return>", self.destroy)   # Return pour fermer cette fenetre popup  
        self.bouton.bind("<KP_Enter>", self.destroy)   # Return du clavier numerique 
 
    def affiche(self,messagetransmis):
 
        Label(self,text=messagetransmis,bg="lightgreen").place(width=300,height=30,relx=0.1,rely=0.4)
 
if __name__ == "__main__":
 
    root = Tk() 
    myapp = interface()
    root.geometry("600x400")
    root.mainloop()