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 :

PanedWindow découpé en 4 parties exactes ?


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 604
    Par défaut PanedWindow découpé en 4 parties exactes ?
    Pour mon projet suivant, qui sera un mini moteur 3D élémentaire en python et en Tkinter, je travaille sur un affichage de 4 canvas, qui doivent être resizables par l'utilisateur.

    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
    #!/usr/local/bin/python
    # -*- coding:utf-8 -*-
    from Tkinter import *
    class Application:
        def __init__(self):
            self.root=Tk()
            self.root.title('PanedWindow - v.1')
            self.root.geometry("600x400")
     
            pwHoriz = PanedWindow(self.root, showhandle=1, sashrelief=SUNKEN)
            pwHoriz.pack(fill=BOTH, expand=1)
     
            pwVerti1 = PanedWindow(pwHoriz, showhandle=1, sashrelief=SUNKEN, orient=VERTICAL)
            pwHoriz.add(pwVerti1)
     
            pwVerti2 = PanedWindow(pwHoriz, showhandle=1, sashrelief=SUNKEN, orient=VERTICAL)
            pwHoriz.add(pwVerti2)
     
            self.cvert1top = Canvas(pwVerti1, bg="yellow")
            pwVerti1.add(self.cvert1top)
     
            self.cvert1bot = Canvas(pwVerti1, bg="blue")
            pwVerti1.add(self.cvert1bot)
     
            self.cvert2top = Canvas(pwVerti2, bg="red")
            pwVerti2.add(self.cvert2top)
     
            self.cvert2bot = Canvas(pwVerti2, bg="green")
            pwVerti2.add(self.cvert2bot)
     
            self.root.mainloop()
     
    # départ du programme principal :
    if __name__ == "__main__":
        f = Application()
    Comment faire en sorte que les 4 canvas soient affichés INITIALEMENT avec la même taille, même quand l'utilisateur redimensionne la fenêtre (quand il n'a pas encore touché volontairement les handles des panedwindows) ?

    Autrement dit : comment placer toutes les barres de séparation exactement au milieu de la fenêtre principale (verticalement et horizontalement) ?

  2. #2
    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,

    tu peux binder la fenêtre et configurer la hauteur des canvas dès que la taille de la fenetre change puis déplacer le sash du panel mais ça je sais pas comment faire

    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
     
    #!/usr/local/bin/python
    # -*- coding:utf-8 -*-
    from Tkinter import *
     
    class Application( Tk ):
        def __init__(self):
            Tk.__init__(self)
            self.title('PanedWindow - v.1')
            self.geometry("600x400")
            self.pwHoriz = PanedWindow( self )
            self.pwHoriz.pack(fill=BOTH, expand=1)
     
            pwVerti1 = PanedWindow(self.pwHoriz, orient=VERTICAL)
            self.pwHoriz.add(pwVerti1)
     
            pwVerti2 = PanedWindow(self.pwHoriz, orient=VERTICAL)
            self.pwHoriz.add(pwVerti2)
     
            self.cans = [None ] * 4
     
            self.cans[0] = self.cvert1top = Canvas(pwVerti1, bg="yellow", height = 200, width = 300)
            self.cvert1top.pack(fill=BOTH, expand=YES)
     
            self.cans[1] = self.cvert1bot = Canvas(pwVerti1, bg="blue", height = 200, width = 300)
            self.cvert1bot.pack(fill=BOTH, expand=YES)
     
            self.cans[2] = self.cvert2top = Canvas(pwVerti2, bg="red", height = 200, width = 300)
            self.cvert2top.pack(fill=BOTH, expand=YES)
     
            self.cans[3] = self.cvert2bot = Canvas(pwVerti2, bg="green", height = 200, width = 300)
            self.cvert2bot.pack(fill=BOTH, expand=YES)
     
            self.bind("<Configure>", self.resize)
     
            self.mainloop()
     
        def resize( self, event ) :
            self.update_idletasks( )
            width_can = self.winfo_width() // 2
            height_can = self.winfo_height() // 2
     
            for can in self.cans :
                can.configure( height = height_can )
                # Méthode pour bouger la barre de panel.
     
     
     
    # départ du programme principal :
    if __name__ == "__main__":
        f = Application()
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    self.pwHoriz.sash_place(0, width_can, self.pwHoriz.sash_coord(0)[0]

    A utiliser avec pwVerti1 et 2 il me semble.

    @+

    Edit: Ne pas oublier d'enlever la moitié du sashwidth/heigth pour avoir le centre

Discussions similaires

  1. [XL-2013] Cells.Replace recherche exacte d'une partie de cellule
    Par L'HeureuxDEbxl dans le forum Excel
    Réponses: 4
    Dernier message: 31/03/2015, 16h29
  2. Algorithme de découpe de signal et de calcul de cette partie
    Par ChrisNilson dans le forum Traitement du signal
    Réponses: 3
    Dernier message: 03/06/2013, 15h14
  3. image d'arrière plan découpées en 3 parties
    Par luna6 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 27/02/2009, 15h38
  4. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23
  5. C'est quoi exactement un générateur d'états
    Par Henry Cesbron Lavau dans le forum Outils de restitution et d'analyse
    Réponses: 0
    Dernier message: 02/04/2002, 19h15

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