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 :

taille d'un canvas


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Points : 53
    Points
    53
    Par défaut taille d'un canvas
    Bonjour,

    j'ai essayé le code suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    from tkinter import Tk,Canvas
     
    fenetre  = Tk()
     
    largeur,hauteur=600,400
     
    canvas = Canvas(fenetre,width=largeur,height=hauteur)
     
    canvas.pack()
     
    canvas.create_rectangle(0,0,largeur,hauteur,outline='red')
     
    fenetre.mainloop()
    Le rectangle rouge obtenu est incomplet: seuls les bords droit et bas apparaissent

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,

    Vous avez un cadre 0, 0, 600, 400.
    Dans ce cadre vous placez un objet de mêmes dimensions avec un bord "rouge".
    Est ce que le "bord" est "dans" les dimensions de l'objet ou "ajouté"?
    N'oubliez pas que vous comptez en "pixels".

    Pour compliquer les choses, le canvas a lui même un bord!
    Jouez a créer un rectangle de dimensions (0, 0, 100, 100) avec un bord d'épaisseur X.
    Faites de même avec: canvas.configure(highlightthickness=0).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Points : 53
    Points
    53
    Par défaut
    Merci

    Je cherche maintenant à centrer mon canvas dans une fenêtre, pour cela j'ai ajouté une frame jaune avec ipadx et ipady=10.

    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
     
    from tkinter import Tk,Canvas,Frame
     
    application  = Tk()
     
    largeur,hauteur=600,400
     
    frame = Frame(application,bg="yellow")
    frame.pack(ipadx=10,ipady=10)
     
    canvas = Canvas(frame,width=largeur,height=hauteur,bg="white")
    canvas.pack()
     
    canvas.configure(highlightthickness=0)
     
    canvas.create_rectangle(0,0,largeur-1,hauteur-1,outline='red')
     
    application.mainloop()
    J'ai bien une bordure jaune à droite et à gauche d'environ 5 pixels, mais je n'ai qu'une bordure en bas de 10 pixels environ. (pas de bordure en haut)

    Pourquoi ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,

    Je n'ai pas de réponse simple: tout est dans la documentation Tk!
    Les tests que vous faites font partie des exercices qu'on s'oblige à faire pour s'assurer qu'on comprend bien ce que les mots lus dans la doc. veulent dire.

    La seule chose que je peux vous proposer est de réfléchir avec l'exemple suivant:
    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
    import tkinter as tk
     
    app = tk.Tk()
    app.geometry('%dx%d' % (700, 700))
     
    frame = tk.Frame(app, width=600, height=600, bg='grey')
    frame.pack(padx=50, pady=50)
    frame.pack_propagate(0)
     
    w1 = tk.Label(frame, text='label1')
    w1.pack(padx=50, pady=50, ipadx=20, ipady=20)
     
    w2 = tk.Label(frame, text='label2')
    w2.pack(padx=50, pady=50)
     
    w3 = tk.Canvas(frame, height=50, width=50, bg='blue')
    w3.pack(padx=20, pady=20)
     
    w4 = tk.Canvas(frame, height=50, width=50, bg='red')
    w4.pack(padx=20, pady=20, ipadx=20, ipady=20)
     
    app.mainloop()
    Il vous montre la différence entre pad et ipad.

    grid et pack se débrouillent pour positionner les "slaves" en respectant leurs dimensions.
    Dire "je veux placer un widget au centre de..." pourrait se faire avec une grille 3x3 mais il faut remplir des cases du bord avec des machins mous pour qu'ils rétrécissent suivant les dimension du widget en 1x1.
    Le GM .place est sans doute plus adapté pour ce genre d'absolu qui oblige a calculer à la mimine (les autres GM évitent de...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Redimensionner image à la taille d'un canvas
    Par Thibault92 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/02/2012, 12h53
  2. Réponses: 2
    Dernier message: 09/02/2010, 18h59
  3. Taille d'un canvas a 100% en AS3
    Par TheDrev dans le forum Flex
    Réponses: 4
    Dernier message: 28/05/2009, 10h10
  4. Définir la taille d'un canvas dans un sizer
    Par Knuckles dans le forum wxPython
    Réponses: 1
    Dernier message: 13/06/2007, 12h27
  5. Adapter un texte à la taille d'un Canvas
    Par alex6891 dans le forum Java ME
    Réponses: 8
    Dernier message: 16/03/2007, 09h21

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