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 :

Position tkMessageBox sur l'écran


Sujet :

Tkinter Python

  1. #1
    psl
    psl est déconnecté
    Membre actif
    Avatar de psl
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 98
    Points : 242
    Points
    242
    Par défaut Position tkMessageBox sur l'écran
    Bonsoir,
    J'utilise un affichage via tkMessageBox.showinfo(titre, message) et cela fonctionne et la fenêtre s'affiche au milieu de l'écran.
    Peut-on modifier la position d'affichage (par ex. au milieu de la fenêtre principale) ?
    Merci pour votre aide
    @+
    Ubuntu 18.04 LTS

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Cette expérience :

    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
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import Tkinter as TK
    import tkMessageBox as MB
     
    def show_dialog (owner=None):
        MB.showinfo("titre", "message", parent=owner)
    # end def
     
    def dlg_fenetre ():
        show_dialog(fenetre)
    # end def
     
    def dlg_fen2 ():
        show_dialog(fen2)
    # end def
     
    fenetre = TK.Tk()
    TK.Label(fenetre, text="Fenêtre #1").pack(padx=10, pady=10)
    TK.Button(fenetre, text="Cliquez ici", command=dlg_fenetre).pack(padx=10, pady=10)
     
    fen2 = TK.Toplevel()
    TK.Label(fen2, text="Fenêtre #2").pack(padx=10, pady=10)
    TK.Button(fen2, text="Cliquez ici", command=dlg_fen2).pack(padx=10, pady=10)
     
    fenetre.mainloop()
    fonctionne OK sous linux ubuntu : la boîte de dialogue s'affiche bien au centre de la fenêtre parente.

    En revanche, il me semble que sous MS-Windows les boîtes tkMessageBox apparaissent systématiquement au centre de l'écran (je dois revérifier).

    EDIT: je confirme, sous MS-Windows 8, les boîtes de dialogue tkMessageBox s'affichent toujours au centre de l'écran.

    @+.
    Dernière modification par Invité ; 12/06/2014 à 22h57.

  3. #3
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Hello,

    Je confirme pour Windows. Juste un point de détail, si l'on a plusieurs écrans, la boite de dialogue s'ouvre au centre de l'écran de la fenêtre appelante.

    A+

    Pfeuh

  4. #4
    psl
    psl est déconnecté
    Membre actif
    Avatar de psl
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 98
    Points : 242
    Points
    242
    Par défaut
    Bonjour,
    Merci à vous deux pour vos réponses.
    @tarball69, j'avais fait le même essai mais sans changement dans l'affichage (suis sous win)
    Je retourne à mes études pour trouver un palliatif.
    @+
    Ubuntu 18.04 LTS

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par psl Voir le message
    Bonjour,
    Je retourne à mes études pour trouver un palliatif.
    @+
    Bonjour, si vous avez l'intention de créer vos propres boîtes de dialogue, gagnez du temps en lisant ceci : http://effbot.org/tkinterbook/tkinte...og-windows.htm

    Bon courage.

    @+.

  6. #6
    psl
    psl est déconnecté
    Membre actif
    Avatar de psl
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 98
    Points : 242
    Points
    242
    Par défaut
    Bonsoir,

    Merci pour le lien, je vais étudier son contenu.
    En attendant, j'ai centré ma fenêtre principale sur le centre de l'écran (cela fait plus propre)
    Ubuntu 18.04 LTS

  7. #7
    psl
    psl est déconnecté
    Membre actif
    Avatar de psl
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 98
    Points : 242
    Points
    242
    Par défaut
    Bonjour,
    J'ai résolu mon problème avec les liens et conseils que vous m'avez communiqués.
    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
    51
    52
    53
    54
    class QuestionOuiNon(Toplevel):
        """Définit une fenêtre question avec réponse oui ou non"""
        def __init__(self, master, titre, message):
            """initialisation et construction"""
            Toplevel.__init__(self, master)                             #init parent
            self.protocol("WM_DELETE_WINDOW", self.destroy)             #sortie par (X)
            self.title(titre)                                           #affiche le titre
            self.iconbitmap("img/icare2.ico")                           #fichier ico
            self.result = 'non'                                         #valeur de retour par défaut
            #composants
            imgGIF = PhotoImage(file="./img/question.gif")              #image de la fenêtre
            labelImgGIF = Label(self, image=imgGIF)                     #affecte l'image au label
            labelImgGIF.grid(row=0, column=0, padx=5, pady=5)           #visualise l'image
     
            lbMessage = Label(self, text=message)                       #label texte
            lbMessage.grid(row=0, column=1, padx=5, sticky="we")        #visualise le texte
     
            frBouton = Frame(self)                                      #frame pour les boutons
            frBouton.grid(row=1, column=0, columnspan=2, sticky="we")   #activation graphique
            btOui = Button(frBouton, text="OUI", width=10)              #bouton oui
            btOui.pack(side=LEFT, padx=5, pady=5, anchor="w")           #activation graphique
            btOui.bind("<Button-1>", self.choixOui)                     #clic gauche souris
            btOui.bind("<space>", self.choixOui)                        #validation par space bar
            btOui.focus_set()                                           #donne le focus
            btNon = Button(frBouton, text="NON", width=10)              #bouton non
            btNon.pack(side=RIGHT, padx=5, pady=5, anchor="e")          #activation graphique
            btNon.bind("<Button-1>", self.choixNon)                     #clic gauche souris
            btNon.bind("<space>", self.choixNon)                        #validation par space bar
            #placement
            self.update_idletasks()                                     #met à jour les caractéristique
                                                                        #de la fenêtre
            self.transient(self.master)                                 #???
            w, h, mx, my, mw, mh = (self.winfo_width(), self.winfo_height(),\
                                    self.master.winfo_rootx(), self.master.winfo_rooty(), \
                                    self.master.winfo_width(), self.master.winfo_height())
                                                                        #lecture des données géométriques
                                                                        #de la fenêtre et de fen
            x = "+"+str(mx+(mw-w)//2)                                   #coordonnée x
            y = "+"+str(my+(mh-h)//2)                                   #coordonnée y (//2 = division entière)
            self.geometry(x+y)                                          #positionne la fenêtre
            self.grab_set()                                             #???
            self.resizable(False, False)                                #non re-dimensionnable
            self.wait_window()                                          #boucle d'évènement locale
     
        def choixOui(self, event):
            """Réponse oui"""
            self.result = "oui"                                         #affecte le choix
            self.destroy()                                              #détruit la fenêtre question
            self.quit()                                                 #quitte la boucle d'évènements
     
        def choixNon(self, event):
            """Réponse non"""
            self.result = "non"                                         #affecte le choix
            self.destroy()                                              #détruit la fenêtre question
    Tout fonctionne comme je le souhaite à part un petit défaut d'affichage lors de l'ouverture de la boîte question (rien de bien grave)
    Par contre, en tant que hyper débutant, vos conseils, critiques ou autres remarques me permettrons certainement de progresser.
    Merci
    @+
    Ubuntu 18.04 LTS

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

Discussions similaires

  1. Position des JFrames sur l'écran
    Par alex2746 dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 10/04/2014, 11h56
  2. position firefox sur configuration à écrans multiples
    Par bernard vacher dans le forum Firefox
    Réponses: 1
    Dernier message: 30/07/2008, 10h21
  3. position controle sur l'écran
    Par Papy214 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/05/2008, 15h20
  4. [c++] Obtenir la position d'une fenêtre sur l'écran
    Par Silverstone dans le forum Windows
    Réponses: 2
    Dernier message: 05/09/2006, 16h11
  5. Position d'une fenêtre sur l'écran (left, top)
    Par Daimonji dans le forum MFC
    Réponses: 9
    Dernier message: 18/12/2005, 14h57

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