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 :

gestion de fenêtre en tk


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut gestion de fenêtre en tk
    Bonsoir

    j'ai quelques questions j'ai chercher sur google (un peu)
    je suis novice en python soyez cool !
    voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def erreur1():        
        fen1 = Tk()
        tex1 = Label(fen1,text='Erreur liaison carte')
        tex1.pack()
        bou1 = Button(fen1,text='OK',command = fen1.destroy)
        bou1.pack()
    comment bloquer le redimensionnement de la fenêtre ?
    la positionner au milieu de l'ecrant ?
    bloquer la possibilité de fermer la fenêtre par le bouton en haut à droite
    pour obliger utilisateur à utiliser "ok" ou gerer cette option
    merci Hervé
    A+

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    bon voila les réponses à tes questions.

    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
     
    from Tkinter import *
     
    #fonction appele pour quitter
    def onQuit():
        print "quit"
        #truk a faire quand tu quittes
        fen1.destroy()
     
    fen1 = Tk()
    #empeche le redimensionnement
    fen1.pack_propagate(0)
    #taille souhaite de la fenetre
    w = 400
    h = 200
    #pour centrer la fenetre
    #taille de l'ecran
    ws = fen1.winfo_screenwidth()
    hs = fen1.winfo_screenheight()
    #calcul la position de la fenetre
    x = (ws/2) - (w/2)
    y = (hs/2) - (h/2)
    #applique la taille et la position
    fen1.geometry('%dx%d+%d+%d' % (w, h, x, y))
    #intercepte l'evenement quit, appel onQuit
    fen1.protocol("WM_DELETE_WINDOW", onQuit)
     
    tex1 = Label(fen1,text='Erreur liaison carte')
    tex1.pack()
    bou1 = Button(fen1,text='OK',command = onQuit)
    bou1.pack()
    fen1.mainloop()
    Si c'est pour afficher un message d'erreur, tu as certainement une fenêtre principale. Regarde du coté de TopLevel.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut
    je crois mettre trompé de rubrique (sorry)

    Merci beaucoup pour la réponse !
    il me semble que :

    #empeche le redimensionnement
    fen1.pack_propagate(0)

    ne fonctionne pas sur mon ordi car je peux déplacer la fenêtre
    et la changer de dimension ?
    le reste fonctionnent
    une autre question (j'abuse mes bon)

    comment désactivé tous les actions tant que l'utilisateur n'appuye pas sur
    "ok" pour eviter l'ouverture de multiples fenêtres ? (je sais pas si ces trés clair cette histoire)

    A+ Hervé

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Utilise des fenêtre TopLevel pour les fenêtres de dialogue.
    tu peux ensuite utiliser TopLevel.transient(parent) pour que la fenêtre soit centrée et qu'elle en premier plan.

    Pour pack_propagate(0), ça empêche la fenêtre de s'ajuster au élément. Si tu veux empêcher le redimensionnement utilise w.resizable(width=False, height=False).

    Pour désactiver une fenêtre, je sais pas. Il doit surement y avoir un moyen. Sinon tu peux utiliser w.config(state="disable") et .config(state="normal") pour désactiver les boutons et aurtes widgets.

    Si tu veux faire des choses compliquées, pense utiliser d'autre bibliothèque, tels que wxpython ou pyqt.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut
    pour nyco 77

    w.resizable(width=False, height=False).
    c'est ok

    je commence juste à utiliser tk et il y a encore beaucoup de travail !!

    encore merci

    A+ Hervé

  6. #6
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour

    je te conseille d'utiliser messageBox
    comme je ne sais pas quel version de python tu utilise
    ce script marchera pour les versions 2.x et 3000 de python.


    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
     
    from platform import python_version
    is_version_3 = python_version().startswith( '3' )
     
    if is_version_3 : 
        from tkinter import *
        import tkinter.messagebox as messagebox
    else :
        from Tkinter import *
        import tkMessageBox as messagebox
     
    def foo() :
        messagebox.showerror( "titre de la fenetre", 'Erreur liaison carte' )
     
    root = Tk()
    Button( root, text = "clic", command = foo ).pack()
    root.mainloop()

    Le module messagebox contient beaucoup d'autre fonctions utiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import tkinter.messagebox
    help( tkinter.messagebox )
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import tkMessageBox 
    help(  tkMessageBox )
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

Discussions similaires

  1. Gestion des fenêtres
    Par Galaad dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/07/2006, 15h29
  2. [DELPHI6] et gestion des fenêtres windows
    Par Desraux dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/03/2006, 16h47
  3. problème de gestion de fenêtre
    Par clemsouz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2004, 14h35
  4. [Tcl/Tk] Gestion de fenêtre
    Par HRS dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 28/08/2004, 21h27

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