IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

text in pop up


Sujet :

Tkinter Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut text in pop up
    Bonjour,

    je voudrais faire apparaitre un pop-up qui serait centré dans la fenetre principale et dans lequel y'aurait un message et un bouton "OK". Quand je clique sur un bouton, je fait apparaitre le popu-up grâce à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fInfos = Toplevel()
             fInfos.title('Infos') # titre du pop-up
             fInfos.geometry('300x150+300+500') # taille du pop-up
             fInfos.configure(background='red')  # couleur d'arrière-plan
    Maintenant, connaitriez-vous la suite du code pour centrer et insérer bouton et texte, svp?
    Merci d'avance de votre aide.
    Cordialement,
    Arsène

  2. #2
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    C'est quoi cette indentation ....

    Il serais grand temps d'ouvrir une doc ... fInfos.geometry('300x150+300+500'), changer donc +300+500 par d'autres valeurs ..
    pour le bouton je ne comprends si vous voulez le mettre dans la topLevel ou s'il doit faire apparaître la topLevel...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Bonjour,

    Citation Envoyé par flapili Voir le message
    pour le bouton je ne comprends si vous voulez le mettre dans la topLevel ou s'il doit faire apparaître la topLevel...
    Je veux bien mettre le bouton dans la topLevel.


    Citation Envoyé par flapili Voir le message
    Il serais grand temps d'ouvrir une doc ... fInfos.geometry('300x150+300+500'), changer donc +300+500 par d'autres valeurs ..
    Va falloir que je trouve par quoi remplacer "300+500". J'arrive pas à utiliser pour le moment :

  4. #4
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Pour obtenir la position de la fenêtre (Tk) sur l'écran, tu as besoin des méthodes winfo_x() et winfo_y(), en ayant ces positions, il ne reste plus qu'à y ajouter la moitié de la soustraction de la dimension de ta fenêtre et de ta toplevel et au final les utiliser dans la méthode geometry() de ta toplevel.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Merci. J'ai essayé ce code d'après ce que vous m'avez dit, mais ça marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
             mywidth = int(fenetre.winfo_x())+int(fenetre.winfo_width()/2)-(300/2)
             myWidth=int(mywidth)
             print("myWidth: "+str(myWidth))
     
             myheight = int(fenetre.winfo_y())+int(fenetre.winfo_height()/2)-(150/2)
             myHeight=int(myheight)
             print("myHeight : "+str(myHeight))
     
             fInfos.geometry('300x150' + str(myWidth) + str(myHeight))
             #fInfos.geometry('300x150+300+500')
             fInfos.configure(background='red')
    La hauteur occupe tout l'écran.

    si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fInfos.geometry(str(myWidth) + str(myHeight)+'300x150')
    c'est la largeur qui occupe tout l'écran.

  6. #6
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fInfos.geometry('300x150' + str(myWidth) + str(myHeight))
    Avant de passer ça à geometry, il faudrait un peu afficher la chaine obtenue et ainsi réaliser que tu n'utilises pas le bon format.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Bonjour,

    j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
             mywidth = int(fenetre.winfo_x())+int(fenetre.winfo_width()/2)-(fenetre.winfo_width()/4)
             myWidth=int(mywidth)
             print("myWidth : "+str(myWidth))
     
             myheight = int(fenetre.winfo_y())+int(fenetre.winfo_height()/2)-(fenetre.winfo_height()/4)
             myHeight=int(myheight)
             print("myHeight : "+str(myHeight))
     
             print(str(myWidth) + "x"+str(myHeight)+'+300+150')
             fInfos.geometry(str(myWidth) + "x"+str(myHeight)+'+300+150')
    Et ça marche! Les dimensions du pop-up sont ici égales aux quart des dimensions de la fenêtre principale.
    Il me reste plus qu'à insérer du texte et un bouton dans le pop-up. J'ai essayé ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
             labelText = StringVar()
             labelText.set ("Please browse to the directory you wish to scan")         
             label1 = Label(fInfos, textvariable=labelText, height=0, width=100)
             label1.pack(side = LEFT )
             myButton = Button(fInfos, text="OK", bg="black", fg="white")
             myButton .place(relx=1, x=-2, y=2, anchor=NE)
    Ça marche. Il me faut maintenant apprendre à mieux positionner les éléments.
    Merci beaucoup. Je crois que j'ai résolu les principaux problèmes.

  8. #8
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par Arsene12 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fInfos.geometry(str(myWidth) + "x"+str(myHeight)+'+300+150')
    Es-tu bien certain que ça fonctionne comme voulu ?
    Parce que là tu définis en dur la position de ta toplevel, si tu déplaces ta fenêtre principale, ta toplevel ne sera plus centrée dessus.

    Quand je t'ai indiqué de te servir de winfo_x et winfo_y, c'était dans l'optique de t'en servir comme coordonnée référente pour positionner la toplevel en fonction de la position de la fenêtre root, pas pour définir sa dimension.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    En effet, le pop-up n'était pas centré. J'ai trouvé la bonne formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
             fInfos = Toplevel()
             fInfos.title('Infos')
     
             myX = int(fenetre.winfo_x())+int(fenetre.winfo_width()/2)-int(fenetre.winfo_width()/8)
             myX=int(myX)  # centrage : position X du pop-up
             myWidth = int(fenetre.winfo_width()/4)  # la largeur du pop-up est égal au 1/4 de la fenêtre principale
     
             myY = int(fenetre.winfo_y())+int(fenetre.winfo_height()/2)-int(fenetre.winfo_height()/8)
             myY=int(myY)  # centrage : position Y du pop-up
             myHeight = int(fenetre.winfo_height()/4) # la hauteur du pop-up est égal au 1/4 de la fenêtre principale
     
             fInfos.geometry(str(myWidth) + "x" + str(myHeight) + "+" + str(myX) + "+" + str(myY))
    Merci de m'avoir aider à comprendre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Modifier du texte en fonction du choix pop up menu
    Par bguy1406 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 17/04/2014, 12h48
  2. Documentation de qques pages de texte, en fenêtre pop-up
    Par Chavadam dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/02/2014, 10h30
  3. Récupérer texte sélectionné depuis pop up
    Par gscorpio dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2009, 11h16
  4. Modifier le texte du bouton d'une pop-up
    Par pythéas dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/11/2007, 14h56
  5. texte dans un pop up
    Par amestoche dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/04/2007, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo