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 :

Des canvas qui se touchent avec grid


Sujet :

Tkinter Python

  1. #1
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut Des canvas qui se touchent avec grid
    Bonjour,

    Je viens de terminer un petit programme qui illustre le fonctionnement de Sinus et de Cosinus.

    Malgré le fait d'avoir mis des padx et des pady à 0, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            # création des 4 canvas :
            self.c1 = Canvas(self.root, bg="white", width=12*self.u, height=12*self.u)
            self.c1.grid(row=0, column=0, padx=0, pady=0)
            self.c2 = Canvas(self.root, bg="white", width=17*self.u, height=12*self.u)
            self.c2.grid(row=0, column=1, padx=0, pady=0)
            self.c3 = Canvas(self.root, bg="white", width=12*self.u, height=17*self.u)
            self.c3.grid(row=1, column=0, padx=0, pady=0)
            self.c4 = Canvas(self.root,             width=17*self.u, height=17*self.u)
            self.c4.grid(row=1, column=1, padx=0, pady=0)
    Il y a toujours un mince bord qui ne place pas les canvas côte à côte.

    Comment faire pour avoir mes canvas self.c1, self.c2 et self.c3 qui se touchent vraiment ?

  2. #2
    Membre actif
    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
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Rajoute l'option highlightbackground="white" dans les canvas, ça semble résoudre ton problème.

  3. #3
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour calogerogigante,

    Une autre solution borderwidth=-1. Par contre, et bizarrement, tu est obligé de faire un self.root.update_idletasks() avant le mainloop pour que cela soit pris en compte au premier affichage (alors que si tu baisse ta fenêtre puis l'affiche on se rend compte que l'option bd est bien prise en compte).

    La solution de nyko77 me semble plus propre.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Merci pour vos interventions, nyko77 et PauseKawa.

    En fait, le highlightbackground="white" ne fait que colorer en blanc la bordure du canvas (qui semble être environ d'un ou deux pixels), mais cette bordure est malheureusement toujours présente.

    Donc, le jour où je vais faire une application qui aura vraiment besoin de mettre côte à côte (sans espace) des canvas, ce ne sera pas valable. Néanmoins, dans le cas de mon application actuelle "sinus-cosinus", c'est une solution esthétique qui est tout à fait ok !.

    Pausekawa : ta solution, je l'ai essayée avec grand espoir, malheureusement, sur Windows Vista, elle ne change rien à la bordure...


    Ca marche chez toi ? Tu es sous Linux peut-être où cette caractéristique est sans doute mieux prise en compte ?

    Bon, tant pis, c'est pas grave, ce n'est pas essentiel pour l'instant à mon application démonstrative sinus-cosinus.

    Bonne journée à vous deux !

  5. #5
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    A mon avis ta bordure c'est le relief (default=FLAT).
    Malheureusement il n'existe pas de relief=None...

    Dommage pour Vista, j'aimais bien l'idée tordue

    @+
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Membre confirmé
    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 : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

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

    Ce que tu vois n'est pas une bordure, mais le cadre indiquant si le canvas a le focus ou non

    pour l'enlever tu as juste à faire ceci :

    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
    from Tkinter import *
    
    root = Tk()
    
    can1 = Canvas( root, height = 50, width = 50, bg="white", highlightthickness=0 )
    can2 = Canvas( root, height = 50, width = 50, bg="white", highlightthickness=0 )
    can3 = Canvas( root, height = 50, width = 50, bg="white", highlightthickness=0 )
    can4 = Canvas( root, height = 50, width = 50, bg="white", highlightthickness=0 )
    
    can1.grid( row=0, column=0)
    can2.grid( row=1, column=0)
    can3.grid( row=0, column=1)
    can4.grid( row=1, column=1)
    mainloop()
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  7. #7
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Génial ! Merci beaucoup Vincent... C'est exactement ça !

    Mes canvas se touchent maintenant sans espacement !

    Je mets ce post en résolu, et vive ce sympathique forum sur Tkinter !

  8. #8
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Citation Envoyé par vincent.mbg Voir le message
    Ce que tu vois n'est pas une bordure, mais le cadre indiquant si le canvas a le focus ou non
    Merci pour l'info vincent.mbg
    Merci d'utiliser le forum pour les questions techniques.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/01/2013, 09h21
  2. Canvas qui empiète sur un Grid
    Par Kadelka dans le forum Silverlight
    Réponses: 2
    Dernier message: 16/09/2009, 15h49
  3. Réponses: 15
    Dernier message: 31/01/2007, 22h03
  4. Réponses: 2
    Dernier message: 04/01/2007, 16h48
  5. Réponses: 2
    Dernier message: 26/04/2006, 08h53

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