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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    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 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
    Bonjour,

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

  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
    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.

    @+

  4. #4
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    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
    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
    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

    @+

  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,

    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

+ 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